2016-08-01 6 views
0

Я пытаюсь загрузить файл в библиотеку документов SharePoint с помощью библиотеки CSOM C#. В библиотеке документов, в которую я загружаюсь, содержатся параметры управления правами на доступ к данным.Загрузите документ в библиотеку SharePoint с помощью IRM

При попытке загрузить файл (либо PDF документ или документ Word - как без какой-либо защиты прикладной), я получаю следующее сообщение об ошибке:

Эта библиотека не принимает файлы данного типа. Вы должны либо загрузить новый, незащищенный файл, который поддерживает управление правами или повторно загрузить документ, который был ранее загруженный из этой библиотеки

я был под впечатлением, что оба документа слова и PDF документы поддерживаются правами управление? Я попытался вручную загрузить оба файла через интерфейс SharePoint (чтобы исключить проблему с файлами, которые я использую), и они добавляются в библиотеку документов без каких-либо проблем.

код, я использую, чтобы загрузить файл показан ниже (это в значительной степени взято из образца при 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(); 
} 

Есть шаг я пропускаю?

ответ

0

После некоторого дальнейшего расследования кажется, что проблема была вызвана из-за именования загруженного файла. Имя файла, которое я использовал, не имело расширения файла, которое должно иметь некоторое отношение к тому, какой IRM-протектор SharePoint применяется к загруженному файлу (что кажется очевидным сейчас в ретроспективе!).