如何在线检查sharepoint中是否存在文件?

时间:2018-03-22 00:17:28

标签: sharepoint sharepoint-online sharepoint-deployment

我正在使用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 个答案:

答案 0 :(得分: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;