gpt4 book ai didi

C# CSOM - 检查文档库中是否存在文件

转载 作者:太空狗 更新时间:2023-10-29 17:30:27 29 4
gpt4 key购买 nike

我使用 CSOM 在 C# 中编码,我的应用程序将模板 asp.net 页面上传到“/Pages/”库,我需要它在文件上传之前检查该位置是否存在同名文件(然后也许它可以返回一个 bool 值)。

我确实快速浏览了一下,但我发现的大多数解决方案都涉及 Javascript 的使用,或应用于本地部署。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

判断文件是否存在可以考虑以下方法。

基于查询

您可以构造 CAML 查询以通过其 Url 查找列表项,如下所示:

public static bool FileExists(List list, string fileUrl)
{
var ctx = list.Context;
var qry = new CamlQuery();
qry.ViewXml = string.Format("<View Scope=\"RecursiveAll\"><Query><Where><Eq><FieldRef Name=\"FileRef\"/><Value Type=\"Url\">{0}</Value></Eq></Where></Query></View>",fileUrl);
var items = list.GetItems(qry);
ctx.Load(items);
ctx.ExecuteQuery();
return items.Count > 0;
}

用法

using (var ctx = GetSPOContext(webUri,userName,password))
{
var list = ctx.Web.Lists.GetByTitle(listTitle);
if(FileExists(list,"/documents/SharePoint User Guide.docx"))
{
//...
}
}

Web.GetFileByServerRelativeUrl 方法

使用Web.GetFileByServerRelativeUrl Method返回位于指定服务器相对 URL 的文件对象。

如果文件不存在则异常Microsoft.SharePoint.Client.ServerException会遇到:

  public static bool TryGetFileByServerRelativeUrl(Web web, string serverRelativeUrl,out Microsoft.SharePoint.Client.File file)
{
var ctx = web.Context;
try{
file = web.GetFileByServerRelativeUrl(serverRelativeUrl);
ctx.Load(file);
ctx.ExecuteQuery();
return true;
}
catch(Microsoft.SharePoint.Client.ServerException ex){
if (ex.ServerErrorTypeName == "System.IO.FileNotFoundException")
{
file = null;
return false;
}
else
throw;
}
}

用法:

 using (var ctx = GetSPOContext(webUri,userName,password))
{
Microsoft.SharePoint.Client.File file;
if(TryGetFileByServerRelativeUrl(ctx.Web,"/documents/SharePoint User Guide.docx",out file))
{
//...
}
}

关于C# CSOM - 检查文档库中是否存在文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28977132/

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