如何报告文件到目前为止已经下载了多少文件大小?

时间:2017-03-10 12:04:16

标签: c# .net winforms

private void DownloadFile()
        {
            if (_downloadUrls.Any())
            {
                WebClient client = new WebClient();
                client.DownloadProgressChanged += client_DownloadProgressChanged;
                client.DownloadFileCompleted += client_DownloadFileCompleted;

                var url = _downloadUrls.Dequeue();
                string startTag = "animated/";
                string endTag = "/infra";

                int index = url.IndexOf(startTag);
                int index1 = url.IndexOf(endTag);

                string fname = url.Substring(index + 9, index1 - index - 9);

                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                req.Method = "HEAD";
                HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                long len = resp.ContentLength;

                client.DownloadFileAsync(new Uri(url), @"C:\Temp\tempframes\" + fname + ".gif");

                lastDownloadedFile = @"C:\Temp\tempframes\" + fname + ".gif";
                label1.Text = url;
                return;
            }

            // End of the download
            btnStart.Text = "Download Complete";
        }

        private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                // handle error scenario
                throw e.Error;
            }
            if (e.Cancelled)
            {
                // handle cancelled scenario
            }

            Image img = new Bitmap(lastDownloadedFile);
            Image[] frames = GetFramesFromAnimatedGIF(img);
            foreach(Image image in frames)
            {
                countFrames++;
                image.Save(@"C:\Temp\tempframes\" + countFrames + ".gif");
            }

            DownloadFile();
        }

        void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            double bytesIn = double.Parse(e.BytesReceived.ToString());
            double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
            double percentage = bytesIn / totalBytes * 100;
            pBarFileProgress.Value = int.Parse(Math.Truncate(percentage).ToString());
        }

使用HttpWebRequest和HttpWebResponse,我可以获得文件大小。 现在我想要下载文件,向标签报告到目前为止从长镜头大小下载的字节数。

例如在label1上看到:1024kb / 50mb或类似的东西不确定以什么尺寸单位显示它但这是个主意。 在另一个标签上做同样的事情并取代当前文件下载的下载速度。

0 个答案:

没有答案