WPF 获取下载内容长度

本文告诉大家如何获取一个下载内容的长度

在 WPF 可以通过 System.Net 的类进行下载资源,如下载一张图片 http://image.acmx.xyz/lindexi%2F2018116203842298 可以使用下面的代码,通过 ContentLength 拿到下载的内容长度

代码语言:javascript
复制
        private async void Button_OnClick(object sender, RoutedEventArgs e)
        {
            var url = "http://image.acmx.xyz/lindexi%2F2018116203842298";
            var request = WebRequest.CreateHttp(url);
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";
            request.Method = "Get";
            using (var response = await request.GetResponseAsync())
            {
                var length = response.ContentLength;
            }
        }

这里的 ContentLength 就是内容的长度,注意很多的网站都需要使用 UserAgent 可以从 UserAgentString 找到很多可以使用的资源

实际上面的代码可以使用 HEAD 代替 get 方法,请看下面

代码语言:javascript
复制
            var url = "http://image.acmx.xyz/lindexi%2F2018116203842298";
            var request = WebRequest.CreateHttp(url);
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1";
            request.Method = "HEAD";
            using (var response = await request.GetResponseAsync())
            {
                var length = response.ContentLength;
            }

具体请看 HTTP协议中POST、GET、HEAD、PUT等请求方法及相应值得含义 - 空白_回忆的博客 - CSDN博客

c# - Getting correct download file size from url - Stack Overflow


本文会经常更新,请阅读原文: https://lindexi.gitee.io/post/WPF-%E8%8E%B7%E5%8F%96%E4%B8%8B%E8%BD%BD%E5%86%85%E5%AE%B9%E9%95%BF%E5%BA%A6.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。