在客户端机器上使用sharepoint下载文件,而不是使用c#在服务器上下载文件

本文关键字:文件 下载 服务器 sharepoint 机器 客户端 | 更新日期: 2023-09-27 17:53:56

请我有一个方法,在sharepoint服务器上创建和下载文件,但我希望这些下载到客户端机器

。它正在以编程方式创建文本文件,并在其中写入"Hello World!",并希望该文件路径位于客户端机器的C:' drive上,而不是服务器上。

. .请帮我做这件事。

在客户端机器上使用sharepoint下载文件,而不是使用c#在服务器上下载文件

您可以使用WebClient下载SharePoint文档库中的文件。

下载url为http(s)://yourserver/path/to/your/folder/file.ext

使用System.Net

,

静态类MyClass{

static WebClient client_ = new WebClient(){
    Credentials = new NetworkCredential("userid", "password")
};
public static void Download(string path_in_sp, string path_in_local){
    client_.DownloadFile(path_in_sp, path_in_local);
}

}

当您使用集成认证时,请使用Credentials = CredentialCache.DefaultCredentials代替。

您也可以使用以下代码

var remotefile = @"https://your sharePoint file addess";
var localfile = @"clientmachine address";
using(WebClient wc = new WebClient())
{
  wc.Credentials = CredentialCache.DefaultNetworkCredentials;
  // or new System.Net.NetworkCredential("user","pass","domain");
  wc.DownloadFile(remotefile,localfile);

}

我不是c#专家,但这里是在VB。应该不会太难理解吧。我的文件都是xls,所以我硬编码它作为扩展名,但是您也可以使用FileLeafRef属性代替JobName,这通常是实际的文件名。在我的例子中,JobName属性更简洁,所以我希望使用它来命名我的本地文件,因此必须添加自己的扩展名。

长话短说,关键是使用OpenBinaryDirect,然后使用system.io:

Imports Microsoft.SharePoint.Client
Module Main
    Sub main()
        Dim context As New ClientContext("<<YOUR SHAREPOINT URL>>")
        Dim webcontent As Web = context.Web
        Dim weblist As ListCollection = context.Web.Lists
        context.Load(weblist)
        context.ExecuteQuery()
        Dim testList As List = context.Web.Lists.GetByTitle("<<YOUR SHAREPOINT LIBRARY>>")
        Dim query As CamlQuery = CamlQuery.CreateAllItemsQuery()
        Dim items As ListItemCollection = testList.GetItems(query)
        context.Load(items)
        context.ExecuteQuery()
        For Each listItem As ListItem In items
            Dim myJobName = listItem.FieldValues("JobName")
            If Not myJobName Is Nothing Then
                Dim myDownload As FileInformation
                Dim myOutFile As String = "C:'test'"
                Dim myModDt = Date.Parse(listItem.FieldValues("Modified").ToString).ToString("yyyyMMdd")
                myDownload = Microsoft.SharePoint.Client.File.OpenBinaryDirect(context, listItem("FileRef").ToString)
                myOutFile += myJobName & "_" & myModDt & ".xls"
                Dim fileStream As Object = System.IO.File.Create(myOutFile)
                myDownload.Stream.CopyTo(fileStream)
            End If
        Next
    End Sub
End Module

希望这对你有帮助!