使用 IRM 将文档上传到 SharePoint 库
Upload a document into a SharePoint library with IRM
我正在尝试使用 C# CSOM 库将文件上传到 SharePoint 文档库。我要上传到的文档库强制执行了信息权限管理设置。
当我尝试上传文件(PDF 文档或 Word 文档 - 均未应用任何类型的保护)时,我收到以下错误消息:
This library does not accept files of the given type. You must either
upload a new, unprotected file that supports rights management or
re-upload a document that was previously downloaded from this library
我的印象是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();
}
我是否遗漏了一个步骤?
经过进一步调查,问题似乎是由上传文件的命名引起的。我使用的文件名没有文件扩展名,这一定与 SharePoint 将哪个 IRM 保护程序应用于上传的文件有关(事后看来这很明显!)。
我正在尝试使用 C# CSOM 库将文件上传到 SharePoint 文档库。我要上传到的文档库强制执行了信息权限管理设置。
当我尝试上传文件(PDF 文档或 Word 文档 - 均未应用任何类型的保护)时,我收到以下错误消息:
This library does not accept files of the given type. You must either upload a new, unprotected file that supports rights management or re-upload a document that was previously downloaded from this library
我的印象是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();
}
我是否遗漏了一个步骤?
经过进一步调查,问题似乎是由上传文件的命名引起的。我使用的文件名没有文件扩展名,这一定与 SharePoint 将哪个 IRM 保护程序应用于上传的文件有关(事后看来这很明显!)。