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

本文关键字:文件夹 文件 何使用 上传 Sharepoint | 更新日期: 2023-09-27 18:20:52

我需要在sharepoint库中使用c#控制台应用程序上传一个文件。我设法只将它上传到父库。但要求是将其上传到其子文件夹中。
下面是文件夹结构:

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

我需要将它上传到子文件夹3中。现在,我只能在根文件夹上上传。当我试图在GetByTitle方法中输入子文件夹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?
        }
    }
}

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

在使用CSOM 上传文件时,有几个选项可以指定子文件夹

以下对所提供的解决方案有两个假设:

  1. 库名称(url)为Documents,具有以下文件夹结构:Folder/Sub Folder/Sub Sub Folder/Sub Sub Sub Folder/

  2. 文件夹结构已存在

使用FileCreationInformation.Url属性

使用FileCreationInformation.Url属性为上载的文件指定文件夹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方法检索必须上载文件的文件夹:

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);   
}

您需要在文件夹中获取子文件夹。像低于

docs.RootFolder.SubFolders

剩下的东西是一样的,只需要添加到相同的文件夹中。

尝试进入下面的文件夹

docs.Folders["FolderName"]