【问题标题】:Download files on client machine in sharepoint not the server using C#使用 C# 在共享点而不是服务器上下载客户端计算机上的文件
【发布时间】:2014-03-26 09:02:08
【问题描述】:

请我有一种在共享点服务器上创建和下载文件的方法,但我希望这些下载来自 客户端计算机

.它正在以编程方式创建文本文件并编写“Hello World!”在其中并希望此文件路径位于客户端计算机上的 C:\ 驱动器上,而不是服务器上。

..请帮我做那个。 提前致谢。

【问题讨论】:

    标签: c# asp.net sharepoint-2010 network-programming


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 我会向你解释更多......它以编程方式创建文本文件并编写“Hello World!”在其中并希望此文件路径位于客户端计算机上的 C:\ 驱动器上,而不是服务器上...请帮我这样做,提前致谢。
    • 你说,在SERVER中生成了一个文本文件,你想让它保存在CLIENT机器中,对吧?该应用程序是可视 Web 部件还是任何其他类型的 Web 应用程序?分享您的代码,您可以获得更多建议!
    • 亲爱的熊猫酒鬼,你能帮帮我吗?
    【解决方案2】:

    您也可以使用此代码

    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);
    

    }

    【讨论】:

    • 但文件路径在服务器硬盘上,不在 URL 中?
    • 我不知道客户端机器地址。我拥有的是服务器硬盘驱动器上的字符串路径和客户端硬盘驱动器上的字符串路径,那我应该怎么做?请帮助我谢谢。
    • 亲爱的 Shaym Sunder Shah,你的答案很好但是 WebClient.DownloadFile 只在有共享点的机器上下载,而不是在使用该网站的机器上,请帮我把你的答案标记为正确?
    【解决方案3】:

    我不是 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
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 2015-05-29
      • 2015-04-22
      相关资源
      最近更新 更多