【问题标题】:Upload a document into a SharePoint library with IRM使用 IRM 将文档上传到 SharePoint 库
【发布时间】:2016-12-06 15:34:02
【问题描述】:

我正在尝试使用 C# CSOM 库将文件上传到 SharePoint 文档库。我要上传到的文档库已强制执行信息权限管理设置。

当我尝试上传文件(PDF 文档或 Word 文档 - 均未应用任何类型的保护)时,我收到以下错误消息:

此库不接受给定类型的文件。你必须要么 上传支持权限管理的新的、不受保护的文件,或 重新上传之前从该库下载的文档

我的印象是Word文档和PDF文档都支持权限管理?我尝试通过 SharePoint UI 手动上传这两个文件(以排除我正在使用的文件的问题),并且它们被添加到文档库中而没有任何问题。

我用来上传文件的代码如下所示(几乎取自https://github.com/OfficeDev/PnP/blob/master/Samples/Core.LargeFileUpload/Core.LargeFileUpload/FileUploadService.cs 的示例):

using (var ctx = GetContext(server))
{
    Web web = ctx.Web;
    ctx.Load(web.Lists, lists => lists.Include(list => list.Title, list => list.RootFolder));
    ctx.ExecuteQuery();

    if (!ListExists(ctx, web, listName))
    {
        throw new InvalidOperationException($"The list '{listName}' does not exist!");
    }

    FileCreationInformation newFile = new FileCreationInformation
    {
        ContentStream = fileStream,
        Url = Path.GetFileName(fileName),
        Overwrite = true
    };

    List docs = web.Lists.GetByTitle(listName);
    Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(newFile);

    if (fileProperties != null && fileProperties.Any())
    {
        var listItem = uploadFile.ListItemAllFields;

        foreach (var fileProperty in fileProperties)
        {
            listItem[fileProperty.Key] = fileProperty.Value;
        }

        listItem.Update();
    }

    ctx.Load(uploadFile);
    uploadFile.CheckIn("Initial checkin", CheckinType.MajorCheckIn);
    ctx.ExecuteQuery();
}

有没有我遗漏的步骤?

【问题讨论】:

    标签: c# sharepoint file-upload office365 csom


    【解决方案1】:

    经过进一步调查,问题似乎是由于上传文件的命名引起的。我使用的文件名没有文件扩展名,这必须与 IRM 保护程序 SharePoint 应用于上传的文件有某种关系(事后看来,这似乎很明显!)。

    【讨论】:

      猜你喜欢
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 2010-10-10
      • 2011-08-25
      • 1970-01-01
      • 2012-01-10
      相关资源
      最近更新 更多