使用C#从SharePoint(CSOM)中下载一个特定的文件。

问题描述 投票:0回答:1

我正在开发一个基于C#的应用程序,需要下载、结账、上传、签到等功能。档案 到Sharepoint的CSOM。所以我有两个问题。

首先,在下载时,是否有其他方法可以下载 "Document "文件夹下的特定文件,而不是通过GetItemByID()来搜索。请参考下面的代码。

string siteUrl = @"http://test.com/sites/company/";

ClientContext ctx = new ClientContext(siteUrl);
ctx.Credentials = new NetworkCredential("username", "password" , "domain");            
ctx.AuthenticationMode = ClientAuthenticationMode.Default;

var list = ctx.Web.Lists.GetByTitle("Document");
var listItem = list.GetItemById();

ctx.Load(list);
ctx.Load(listItem, i => i.File);
ctx.ExecuteQuery();

var fileRef = listItem.File.ServerRelativeUrl;
var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, fileRef);
var fileName = Path.Combine("C:\\", (string)listItem.File.Name);

using (var fileStream = System.IO.File.Create(fileName))
{
    fileInfo.Stream.CopyTo(fileStream);
}

第二,关于工作流程(下载、修改、签出、上传、签入),这样做是否可行?

先谢谢你了。

c# winforms sqlite sharepoint-2013 csom
1个回答
0
投票

对于获取特定的文件,不需要通过Id来获取ListItem,而是直接通过服务器关系人的网址,就像这样。

  ClientContext clientContext = new ClientContext("http://sp/sites/dev");
    Web web = clientContext.Web;
    Microsoft.SharePoint.Client.File filetoDownload = web.GetFileByServerRelativeUrl("/sites/dev/shared%20documents/mytest.txt");
    clientContext.Load(filetoDownload);
    clientContext.ExecuteQuery();
    var fileRef = filetoDownload.ServerRelativeUrl;
    var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, fileRef);
    var fileName = Path.Combine("C:\\", (string)filetoDownload.Name);

    using (var fileStream = System.IO.File.Create(fileName))
    {
        fileInfo.Stream.CopyTo(fileStream);
    }

对于其他用途,签出,更新,签入,我建议你还是用CSOM,因为有内置的功能支持。

文件方法

© www.soinside.com 2019 - 2024. All rights reserved.