我想在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\...
上的文本文件中添加一行?预先谢谢你。
您将需要通过API以编程方式登录到SharePoint,然后下载文件,然后对文件进行更改,然后将其上传回SharePoint。
假设您正在使用Visual Studio,您首先要安装适合于您的SharePoint版本的nuget包(2013,2016,2019,Online/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);
}
}
请注意,如果您的媒体库需要检出,您可能还需要以编程方式检出文件,然后再上传更改的文件,然后将其重新检入。