【问题标题】:Downloading files using httprequest使用 httprequest 下载文件
【发布时间】:2011-01-31 22:33:42
【问题描述】:

是否可以使用 httprequest 从网站下载文件?我只习惯用它来获取页面的源代码。如果没有办法使用httprequest,有没有办法使用C#下载文件而不必使用webbrowser?

编辑:答案必须允许我选择将文件下载到的硬盘驱动器位置

【问题讨论】:

    标签: c# download httprequest


    【解决方案1】:

    您完全可以通过获取WebResponse 并使用其响应流来使用HttpRequest。或者,使用WebClient 及其DownloadFileDownloadData 方法让生活更轻松。

    最终,获取二进制文件作为响应的请求和获取一些 HTML 作为响应的请求之间并没有太大区别。在某些方面,二进制响应更容易处理,因为您无需担心字符编码。

    【讨论】:

    • @DazSlayer .. 你为什么不尝试使用这些类并尝试一下? :-)
    • @DazSlayer:要么使用WebClient.DownloadFile,要么只打开一个FileStream,然后从响应流中重复读取并将其写入文件流。如果您使用的是 .NET 4,甚至可以使用 Stream.CopyTo 来简化此操作。
    • 如果您能告诉我如何更改文件下载到的位置,我会将其标记为答案。
    • @DazSlayer:只需在构造 FileStream 或 WebClient.DownloadFile 时指定完整路径名。您可以使用Path.Combine 从文件夹名和文件名中获取完整路径。
    • 我需要WebRequest 来执行此操作,因为它可以使用CookieContainer,并保持登录会话,非常适合爬行。这不是我的答案,但我很高兴它为答案的创建者解决了问题。
    【解决方案2】:

    使用 WebClient Class 来包装您通过 http 下载数据的所有需求。

    获取页面源代码:

     WebClient client = new WebClient ();
     string src = client.DownloadString(uri);
    

    【讨论】:

    • 如何更改下载文件的位置?
    • 这基本上返回一个字符串,使用 downloadFile (msdn.microsoft.com/en-us/library/ms144194(v=vs.80).aspx) 设置下载路径(正如@jonSkeet 所说;)
    • 网站上的示例只展示了如何将文件下载到应用程序的启动路径,如何让用户选择下载文件的位置?
    【解决方案3】:

    这应该可以。

    using (WebClient wc = new WebClient())
    {
        wc.DownloadFile(downloadURL, fileName);
    }
    

    【讨论】:

    • 第二个参数是文件名,不是savePath
    • 但是 =) 我认为它会更容易理解。因为我认为它是一个路径和一个文件名......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2015-04-08
    • 2010-12-20
    • 2016-01-06
    • 2018-04-08
    • 2020-07-09
    相关资源
    最近更新 更多