如何向@“ https:\\ something_like_this.com \ Data \ text.txt”中添加行”

问题描述 投票:-1回答:1

我想在SharePoint文件夹上的文本文件中添加一行文本。这是我尝试过的方法(请假设text.txt已经存在):

using System.IO;

namespace WriteText
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"https:\\something_like_this.com\Data\text.txt";
            //string path = @"C:\Data\text.txt";
            File.AppendAllLines( path, new[]{"Hello"});
        }
    }
}

...但是,我得到了System.NotSupportedException。复制https:\\something_like_this.com\Data\text.txt并粘贴到浏览器时,我可以看到文件内容。这表示网址正确。为什么我不能在文本文件中添加一行?

顺便说一句,如果路径为@"C:\Data\text.txt",则它会成功添加一行。

这很简单,但是我该如何解决?谁能尝试我的代码在https:\\your_own_server.com\...上的文本文件中添加一行?预先谢谢你。

c# sharepoint https append
1个回答
0
投票

您将需要通过API以编程方式登录到SharePoint,然后下载文件,然后对文件进行更改,然后将其上传回SharePoint。

假设您正在使用Visual Studio,您首先要安装适合于您的SharePoint版本的nuget包(201320162019Online/O365)。

然后尝试这样的事情:

using (var clientContext = new ClientContext(url))
{ 
  var list = clientContext.Web.Lists.GetByTitle(listTitle); 
  var listItem = list.GetItemById(listItemId); 
  clientContext.Load(list);
  clientContext.Load(listItem, i => i.File); 
  clientContext.ExecuteQuery(); 
  var fileRef = listItem.File.ServerRelativeUrl; 
  var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, fileRef); 
  var fileName = Path.Combine(filePath, (string)listItem.File.Name); 
  using (var fileStream = System.IO.File.Create())
  { 
    fileInfo.Stream.CopyTo(fileStream);
  } 
  File.AppendAllLines(fileName, new[]{"Hello"}); }

  using (var fs = new FileStream(fileName, FileMode.Open))
  {
    Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, fileRef, fs, true);
  }
}

请注意,如果您的媒体库需要检出,您可能还需要以编程方式检出文件,然后再上传更改的文件,然后将其重新检入。

© www.soinside.com 2019 - 2024. All rights reserved.