鸦鸦 发表于 2015-9-25 09:17:34

SharePoint 服务器端对象模型操作文档库(上传/授权/查看权限)

  简介:上传文档到文档库,并对项目级授权,查看项目级权限方法
      //在列表根目录下创建文件夹
      public static string CreatFolderToSPDocLib(string strFolderName, string strDocLibName)
      {
            string FolderPath = string.Empty;

            try
            {
                using (SPSite site = new SPSite(SiteUrl))
                {
                  using (SPWeb web = site.OpenWeb())
                  {
                        web.AllowUnsafeUpdates = true;
                        SPListCollection lists = web.GetListsOfType(SPBaseType.DocumentLibrary);
                        lists.IncludeRootFolder = true;
                        SPList list = lists;
                        list.EnableFolderCreation = true;
                        SPListItem item = list.Items.Add(list.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, strFolderName);
                        item.Update();
                        list.Update();
                        FolderPath = item["FileRef"].ToString();
                        web.AllowUnsafeUpdates = false;
                  }
                }
            }
            catch
            {
            }
            return FolderPath;
      }

  //上传文件到文件夹,并授权给相关用户
      public static bool UpLoadFileToFolder(byte[] FileStream, string FileName, string FolderPath, string allLoginName)
      {
            try
            {
                using (SPSite site = new SPSite(SiteUrl))
                {
                  using (SPWeb web = site.OpenWeb())
                  {
                        web.AllowUnsafeUpdates = true;
                        SPFolder folder = web.GetFolder(FolderPath);

                        SPListItem listItem = folder.Files.Add(FileName, FileStream).Item;

                        //断开原来列表项所继承的权限,使其可以设置独立权限
                        listItem.BreakRoleInheritance(true);
                        //将原来所继承的权限通通移除
                        foreach (SPRoleAssignment roleAssignment in listItem.RoleAssignments)
                        {
                            roleAssignment.RoleDefinitionBindings.RemoveAll();
                            roleAssignment.Update();
                            listItem.Update();
                        }
                        //获取将要设置权限的用户
                        SPUser myUser = web.EnsureUser(allLoginName);
                        //定义权限分配
                        SPRoleAssignment myRoleAssignment = new SPRoleAssignment(myUser.LoginName, myUser.Email, myUser.Name, myUser.Notes);
                        //绑定设置的权限
                        myRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Reader));
                        //把这个权限加到我们的列表中
                        listItem.RoleAssignments.Add(myRoleAssignment);
                        listItem.Update();

                        web.AllowUnsafeUpdates = false;
                        return true;
                  }
                }
            }
            catch
            {
                return false;
            }
      }

      //通过ID获取列表项
      public static string GetRoleAssignmentsOfSPListItem(string ListName, int ItemID)
      {
            string reValue = string.Empty;
            try
            {
                using (SPSite site = new SPSite(SiteUrl))
                {
                  using (SPWeb web = site.OpenWeb())
                  {
                        web.AllowUnsafeUpdates = true;
                        SPList list = web.Lists;
                        SPListItem item = list.Items.GetItemById(ItemID);
                        SPRoleAssignmentCollection Rolecoll = item.RoleAssignments;
                        foreach (SPRoleAssignment role in Rolecoll)
                        {
                            for (int i = 0; i < role.RoleDefinitionBindings.Count; i++)
                            {
                              reValue += (role.Member.LoginName + ":" + role.RoleDefinitionBindings.Name + ":" + role.RoleDefinitionBindings.BasePermissions.ToString());
                            }
                        }

                        web.AllowUnsafeUpdates = false;
                  }
                }
            }
            catch
            {
            }
            return reValue;
  }
  
  后记:几个简单的方法,测试通过,可能不太完善,需要的话可以继续完善。
页: [1]
查看完整版本: SharePoint 服务器端对象模型操作文档库(上传/授权/查看权限)