Как проверить, существует ли файл в sharepoint онлайн?
Я работаю с sharepoint онлайн и использую код, который мне нужен, чтобы проверить, существует файл или нет. Пожалуйста, не надо мне скачивать файл. Мой код будет использовать его URL, если файл существует, поэтому нет необходимости скачивать его.
Ниже код попробуйте скачать файл, который я не хочу:
class Program
{
static void Main(string[] args)
{
string Web = @”https://domain/sitecollection/“;
string FileName = @”/Sitecollection/Records/file.txt”;
ClientContext clientContext = new ClientContext(Web);
Web site = clientContext.Web;
if (TryGetFileByServerRelativeUrl(site, FileName)) Console.WriteLine(“File exists”); elseConsole.WriteLine(“File does not exist”);
Console.ReadLine();
}
public static bool TryGetFileByServerRelativeUrl(Web web, string serverRelativeUrl)
{
var ctx = web.Context;
try
{
File file = web.GetFileByServerRelativeUrl(serverRelativeUrl);
ctx.Load(file);
ctx.ExecuteQuery();
return true;
}
catch (Microsoft.SharePoint.Client.ServerException ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.Message);
if (ex.ServerErrorTypeName == “System.IO.FileNotFoundException”)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.Message);
return false;
}
return false;
}
catch (Exception exp)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(exp.Message);
return false;
}
}
}
Пожалуйста, помогите, как я могу проверить, существует ли файл, не загружая его.
1 ответ
Решение
Используйте CAML-запрос для запроса на основе URL файла.
var query = new CamlQuery();
query.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(query);
ctx.Load(items);
ctx.ExecuteQuery();
return items.Count > 0;