前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >win8 metro HttpClient下载文件-带进度条

win8 metro HttpClient下载文件-带进度条

作者头像
井九
发布2024-10-12 09:05:55
发布2024-10-12 09:05:55
7600
代码可运行
举报
文章被收录于专栏:四楼没电梯四楼没电梯
运行总次数:0
代码可运行

HttpClient 直接下载文件,如果文件比较大,没有进度显示会很不友好,

所有在下载的时候希望下载一部分就显示一下进度。

代码的重点是

代码语言:javascript
代码运行次数:0
复制
HttpCompletionOption.ResponseHeadersRead

以及

代码语言:javascript
代码运行次数:0
复制
ReadAsStreamAsync

对于dispose,也可以用using。

代码语言:javascript
代码运行次数:0
复制
var saveFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(filename,
                        CreationCollisionOption.ReplaceExisting);
                    var fs = await saveFile.OpenAsync(FileAccessMode.ReadWrite);
                    HttpClientHandler handler = new HttpClientHandler();
                    handler.ClientCertificateOptions = ClientCertificateOption.Automatic;
                    HttpClient hc = new HttpClient(handler);
                    HttpResponseMessage response = await hc.GetAsync(DownUrl, HttpCompletionOption.ResponseHeadersRead);
                    Stream stream = await response.Content.ReadAsStreamAsync();
                    IInputStream inputStream = stream.AsInputStream();
                    ulong totalBytesRead = 0;
                    while (true)
                    {
                        // Read from the web.
                        IBuffer buffer = new Buffer(1024);
                        buffer = await inputStream.ReadAsync(
                            buffer,
                            buffer.Capacity,
                            InputStreamOptions.None);

                        if (buffer.Length == 0)
                        {
                            // 完成
                            break;
                        }

                        // 进度
                        totalBytesRead += buffer.Length;
                        System.Diagnostics.Debug.WriteLine("Bytes read: {0}", totalBytesRead);

                        // 写文件.
                        await fs.WriteAsync(buffer);
                    }
                    inputStream.Dispose();
                    fs.Dispose();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档