【问题标题】:WebClient.DownloadFileAsync underlying implemintationWebClient.DownloadFileAsync 底层实现
【发布时间】:2011-12-25 12:31:38
【问题描述】:

有谁知道 WebClient.DownloadFileAsync 是如何实现的? 我对此有几个问题:

  1. 返回的流是保存在内存中直到整个文件下载,还是直接缓冲到临时文件中(然后复制到正确的路径)?还是直接进入指定的文件?
  2. 编写一个简单的 WCF 休息服务来应答这些调用需要以下内容:

    set response headers - Content-Type: application/octet-stream  
                           Content-Length: 3 
                           Content-Disposition: Attachment;
                           filename=SomeFileName.jpeg 
    

    并返回一个字节[]

我错过了什么吗?

【问题讨论】:

  • 您可以通过直接查看source code 或使用many disassemblers 之一进行拆卸来检查自己。
  • 户田! - 不知道那个网站。在试图找到实际来源时有点迷路 - 稍后会更深入地挖掘。再次感谢
  • Bevakasha...希望这些帮助。

标签: c# webclient


【解决方案1】:
  1. 响应流以块的形式读取,这些块直接写入输出文件流,整个文件不会加载到内存中。
  2. WebClient 并不真正关心服务器发送什么标头。它读取响应流并将其以块的形式保存到输出文件中。

【讨论】:

  • 如果它没有读取响应头 conternt-length 它如何在进度更改事件中为我提供完成百分比?或要接收的总字节数..等等?
  • @JanivZ,它不能。如果没有 Content-Length 标头,您将不会收到进度通知。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
相关资源
最近更新 更多