gpt4 book ai didi

c# - 如何使用 C# 上传 Sharepoint 库子文件夹中的文件?

转载 作者:太空狗 更新时间:2023-10-29 20:04:37 26 4
gpt4 key购买 nike

我需要在 Sharepoint 库中使用 C# 控制台应用程序上传文件。我设法只将它上传到父图书馆。但要求是将其上传到其子文件夹中。
所以这是文件夹结构:

根文件夹
-子文件夹 1
---子文件夹2
----子文件夹 3

我需要在子文件夹 3 中上传它。现在,我只能在根文件夹中上传。在GetByTitle方法中尝试输入Sub Folder 3时报错,但当它是根文件夹时,它上传成功。

这是我的代码。

using (ClientContext clientContext = new ClientContext(siteURL))
{
clientContext.Credentials = new System.Net.NetworkCredential(@"username", "password", "domain");

var web = clientContext.Web;

// Create the new file
var newFile = new FileCreationInformation();
newFile.Content = System.IO.File.ReadAllBytes(@"C:\filepath\test.xlsx");
newFile.Overwrite = true;
newFile.Url = "Test Upload.xlsx";

List list = web.Lists.GetByTitle("Service Oriented Architecture (SOA)");
clientContext.Load(list);
clientContext.ExecuteQuery();
clientContext.Load(list.RootFolder);
clientContext.Load(list.RootFolder.Folders);

clientContext.ExecuteQuery();

foreach (Folder SubFolder in list.RootFolder.Folders)
{
if (SubFolder.Name.Equals("07 - SOA Environment"))
{
//What's next?
}
}
}

最佳答案

使用 CSOM 上传文件时如何指定子文件夹有几个选项

关于下面提供的解决方案有两个假设:

  1. 库名称 (url) 是 Documents 并且具有以下文件夹结构:文件夹/子文件夹/子子文件夹/子子子文件夹/

  2. 文件夹结构已经存在

使用 FileCreationInformation.Url 属性

使用FileCreationInformation.Url property为上传的文件指定文件夹 url

下面的例子演示了如何指定相对 url(你的例子的一个稍微修改的版本,主要区别在于指定 FileCreationInformation.Url)

var uploadFilePath = @"c:\tmp\SharePoint User Guide.docx"; 
var fileCreationInfo = new FileCreationInformation
{
Content = System.IO.File.ReadAllBytes(uploadFilePath),
Overwrite = true,
Url = Path.Combine("Documents/Folder/Sub Folder/Sub Sub Folder/Sub Sub Sub Folder/", Path.GetFileName(uploadFilePath))
};

var list = context.Web.Lists.GetByTitle("Root Folder");
var uploadFile = list.RootFolder.Files.Add(fileCreationInfo);
context.Load(uploadFile);
context.ExecuteQuery();

使用 Web.GetFolderByServerRelativeUrl 方法

使用Web.GetFolderByServerRelativeUrl method检索必须上传文件的文件夹:

public static void UploadFile(ClientContext context,string uploadFolderUrl, string uploadFilePath)
{
var fileCreationInfo = new FileCreationInformation
{
Content = System.IO.File.ReadAllBytes(uploadFilePath),
Overwrite = true,
Url = Path.GetFileName(uploadFilePath)
};
var targetFolder = context.Web.GetFolderByServerRelativeUrl(uploadFolderUrl);
var uploadFile = targetFolder.Files.Add(fileCreationInfo);
context.Load(uploadFile);
context.ExecuteQuery();
}

用法

using (var ctx = new ClientContext(webUri))
{
ctx.Credentials = credentials;

UploadFile(ctx,"Documents/Folder/Sub Folder/Sub Sub Folder/Sub Sub Sub Folder",filePath);
}

关于c# - 如何使用 C# 上传 Sharepoint 库子文件夹中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com