不能使用CSOM上传文件到文档库

本文关键字:文件 文档 CSOM 不能 | 更新日期: 2023-09-27 18:17:56

我试图将多个文件上传到文档库,并更新其列值。列表(Doc Lib)已经存在,但我坚持上传文件

我试过这些方法

    使用lists.asmx
  1.         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);
            }
    

给出AddAttachment()

上的错误ServerException :To add an item to a document library, use SPFileCollection.Add()使用
  •         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,但现在我在cc.ExecuteQuery()上获得ServerException :To add an item to a document library, use SPFileCollection.Add()

    但是如果这个方法有效,我想要的是更新与这个文件相关的列值。在第一种方法中,我得到item。ID,从这里我可以更新列值

    不能使用CSOM上传文件到文档库

    关于第二种方法,下面的示例演示了如何将文件上传到Documents库并设置其属性(例如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();
    }