代码之家  ›  专栏  ›  技术社区  ›  Johann Gerell

通过HTTP下载简单的文件-这足够了吗?

  •  0
  • Johann Gerell  · 技术社区  · 14 年前

    我需要我的应用程序中的基本文件下载功能,我无法使用 WebClient.DownloadFile [1] 是的。这是中堂吗执行 DownloadFile

    public static void DownloadFile(String url, String destination)
    {
        using (var request = (HttpWebRequest)WebRequest.Create(url))
        {
            request.Method = "GET";
            request.Timeout = 100000; // 100 seconds
    
            using (var response = request.GetResponse())
            {
                using (var responseStream = response.GetResponseStream())
                {
                    using (var fileStream = File.Open(destination,
                                                      FileMode.Create,
                                                      FileAccess.Write,
                                                      FileShare.None))
                    {
                        var MaxBytesToRead = 10 * 1024;
                        var buffer = new Byte[MaxBytesToRead];
                        var totalBytesRead = 0;
                        var bytesRead = responseStream.Read(buffer,
                                                            0,
                                                            MaxBytesToRead);
    
                        while (bytesRead > 0)
                        {
                            totalBytesRead += bytesRead;
                            fileStream.Write(buffer, 0, bytesRead);
                            bytesRead = responseStream.Read(buffer,
                                                            0,
                                                            MaxBytesToRead);
                        }
                    }
                }
            }
        }
    }
    

    谢谢!

    [1] .Net压缩框架。。。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Tim Robinson    14 年前

    你在跟踪 totalBytesRead ,但我看不到它在任何地方使用。

    Method = "GET" 是默认值,我看不到任何特定于HTTP的内容。如果您删除 (HttpWebRequest) Method = 然后您将获得通过其他协议(如FTP)下载的能力。当前,如果有人提供了 http://

        2
  •  1
  •   jgauffin    14 年前

    响应应该有一个内容长度头(除非内容编码=分块),您可以使用它来验证下载没有中断。

    除此之外,我看你的实现还不错。

    推荐文章