使用 pnp.core 和 pnp.framework 在 C# 中访问共享点文件夹和文件的正确方法是啥?
Posted
技术标签:
【中文标题】使用 pnp.core 和 pnp.framework 在 C# 中访问共享点文件夹和文件的正确方法是啥?【英文标题】:What's the right way to access sharepoint folders and files in C# using pnp.core and pnp.framework?使用 pnp.core 和 pnp.framework 在 C# 中访问共享点文件夹和文件的正确方法是什么? 【发布时间】:2022-01-03 14:15:29 【问题描述】:我需要处理存储在我的 c# 应用程序的 SharePoint 文件夹中的一些文件,但是 atm 我找不到正确的方法来执行此操作。我使用 Microsoft.sharepoint.client、pnp.core 和 pnp.framework 作为库,我的代码类似于:
string DocLibrary = "Documents";
try
using (var clientContext = new AuthenticationManager().GetACSAppOnlyContext(siteUrl, clientId, clientSecret))
Web web = clientContext.Web;
List DocumentLibrary = web.Lists.GetByTitle(DocLibrary);
clientContext.Load(web, w => w.Title);
clientContext.Load(DocumentLibrary);
clientContext.ExecuteQuery();
//part where I need to access the files
catch (Exception exp)
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(exp.Message + Environment.NewLine + exp.StackTrace);
finally
Console.ReadLine();
假设我需要访问文件夹的 URL 是“https://teamsite.msc.com/sites/mysite/Shared%20Documents/General/TestFolder/” 有没有办法直接访问文件夹?因为我发现访问它的唯一方法是执行以下操作:
clientContext.Load(DocumentLibrary.RootFolder);
clientContext.Load(DocumentLibrary.RootFolder.Folders);
clientContext.ExecuteQuery();
FolderCollection fcol = DocumentLibrary.RootFolder.Folders;
foreach (Folder f in fcol)
clientContext.Load(f);
clientContext.ExecuteQuery();
If(f.name="General")
//iteration on folder and files
据我所知,这种方法很糟糕。
【问题讨论】:
【参考方案1】:您可以使用clientContext.Web.GetFolderByServerRelativeUrl
直接获取文件夹。
见Working with folders and files
【讨论】:
好的,谢谢,现在我可以使用 GetFileByServerRelativeUrl 检索文件夹,甚至文件。但是在 Sharepoint.Client.FIle 上读取或写入的正确方法是什么。可能这是一个愚蠢的问题,但我找不到太多关于它的文档。 最简单的方法是 File.SaveBinaryDirect。您不需要任何 Client.File ,只需要 URL 和数据。 docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/…(有例子)以上是关于使用 pnp.core 和 pnp.framework 在 C# 中访问共享点文件夹和文件的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 php 和 mysql 使用纬度和经度进行几何搜索
Cocoa - 为啥使用 NSInteger 和 CGFloat 而不是使用 int 和 float,或者总是使用 NSNumber?