在客户端机器上使用sharepoint下载文件,而不是使用c#在服务器上下载文件
本文关键字:文件 下载 服务器 sharepoint 机器 客户端 | 更新日期: 2023-09-27 17:53:56
请我有一个方法,在sharepoint服务器上创建和下载文件,但我希望这些下载到客户端机器。
。它正在以编程方式创建文本文件,并在其中写入"Hello World!",并希望该文件路径位于客户端机器的C:' drive上,而不是服务器上。
. .请帮我做这件事。
您可以使用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
希望这对你有帮助!