【发布时间】:2014-03-26 09:02:08
【问题描述】:
请我有一种在共享点服务器上创建和下载文件的方法,但我希望这些下载来自 客户端计算机。
.它正在以编程方式创建文本文件并编写“Hello World!”在其中并希望此文件路径位于客户端计算机上的 C:\ 驱动器上,而不是服务器上。
..请帮我做那个。 提前致谢。
【问题讨论】:
标签: c# asp.net sharepoint-2010 network-programming
请我有一种在共享点服务器上创建和下载文件的方法,但我希望这些下载来自 客户端计算机。
.它正在以编程方式创建文本文件并编写“Hello World!”在其中并希望此文件路径位于客户端计算机上的 C:\ 驱动器上,而不是服务器上。
..请帮我做那个。 提前致谢。
【问题讨论】:
标签: c# asp.net sharepoint-2010 network-programming
您可以使用WebClient 下载SharePoint 文档库中的文件。
下载地址为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
希望这会有所帮助!
【讨论】: