使用IRM将文档上载到SharePoint库中

本文关键字:SharePoint 库中 上载 文档 IRM 使用 | 更新日期: 2023-09-27 17:59:36

我正在尝试使用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();
}

我缺了一步吗?

使用IRM将文档上载到SharePoint库中

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