2015-10-15 2 views
1

Я пытаюсь загрузить несколько файлов в библиотеку документов, а также обновить его значения coloumn. List (Doc Lib) уже существует, но я застрял с uploadinf файлНе удается загрузить файл в библиотеку документов с помощью CSOM

Я пробовал эти методы

  1. использованием Lists.asmx

     NetworkCredential credentials = new NetworkCredential("user", "Pass", "domain"); 
         #region ListWebService 
         ListService.Lists listService = new ListService.Lists(); 
         listService.Credentials = credentials; 
         List list = cc.Web.Lists.GetByTitle(library); 
         listService.Url = cc.Url + "/_vti_bin/lists.asmx"; 
         try 
         { 
          FileStream fStream = System.IO.File.OpenRead(filePath); 
          string fName = fStream.Name.Substring(3); 
          byte[] contents = new byte[fStream.Length]; 
          fStream.Read(contents, 0, (int)fStream.Length); 
          fStream.Close(); 
    
          string attach = listService.AddAttachment(library, itemId.ToString(), Path.GetFileName(filePath), contents); 
    
         } 
         #endregion 
    
    
         catch (System.Web.Services.Protocols.SoapException ex) 
         { 
          CSVWriter("Message:\n" + ex.Message + "\nDetail:\n" + 
           ex.Detail.InnerText + "\nStackTrace:\n" + ex.StackTrace, LogReport); 
         } 
    

Это дает погрешность ServerException :To add an item to a document library, use SPFileCollection.Add() на AddAttachment()

  1. Использование

     List lib = cc.Web.Lists.GetByTitle("TestLib"); 
         FileCreationInformation fileInfo = new FileCreationInformation(); 
         fileInfo.Content = System.IO.File.ReadAllBytes("C:\\Users\\AJohn\\Desktop\\sample.docx"); 
         fileInfo.Url = "https://serverm/sites/Testing1/TestLib/sample.docx"; 
         fileInfo.Overwrite = true; 
         Microsoft.SharePoint.Client.File upFile = lib.RootFolder.Files.Add(fileInfo); 
         cc.Load(upFile); 
         cc.ExecuteQuery(); 
    

Я был в состоянии загрузить once, используя этот метод, но теперь я получаю ServerException :To add an item to a document library, use SPFileCollection.Add() на cc.ExecuteQuery()

Но если вообще этот метод работает, что я хочу, что я должен обновлять значения coloumn, связанные с этим файлом. В первом методе я получаю так от item-id там я могу обновить Coloumn значения

ответ

2

Что касается второго способа, в следующем примере показано, как загрузить файл в библиотеку документов и установить его свойства (например, Category текстовое поле)

using (var ctx = new ClientContext(webUri)) 
{ 
    var targetList = ctx.Web.Lists.GetByTitle("Documents"); 
    var fileInfo = new FileCreationInformation 
    { 
      Url = System.IO.Path.GetFileName(sourcePath), 
      Content = System.IO.File.ReadAllBytes(sourcePath), 
      Overwrite = true 
    }; 

    var file = targetList.RootFolder.Files.Add(fileInfo); 
    var item = file.ListItemAllFields; 
    item["Category"] = "User Guide"; 
    item.Update(); 
    ctx.ExecuteQuery(); 
} 
+0

Спасибо Vandim, котор он работал..and я смог обновить coloumns через CSV, Любая идея как скачать полный список (с значениями coloumn) в csv? –

+0

@ AndyCrz, это звучит для меня как хороший вопрос, не могли бы вы создать для него отдельный вопрос? –

+0

http://stackoverflow.com/questions/33266404/sharepoint-uploading-files-with-column-values-cant-load-taxonomy-fields-in-ta здесь –

Смежные вопросы