四联光电智能照明论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1751|回复: 0
打印 上一主题 下一主题

Http 下载文件 并显示进度条

[复制链接]
  • TA的每日心情
    开心
    2022-6-10 09:59
  • 366

    主题

    741

    帖子

    9649

    积分

    超级版主

    Rank: 8Rank: 8

    积分
    9649
    跳转到指定楼层
    楼主
    发表于 2016-10-28 12:50:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
            /// <summary>        
            /// HTTP 下载文件     
            /// Current Thread Download
            /// </summary>        
            /// <param name="URL">下载文件地址</param>        
            /// <param name="buffer">将下载的文件存入该字节数组</param>        
            /// <param name="Prog">用于显示的进度条</param>        
            public void DownloadFile(string URL, ref byte[] buffer, ProgressBar prog)
            {
                try
                {
                    System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL);
                    System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
                    long totalBytes = myrp.ContentLength;
                    if (prog != null)
                    {
                        prog.Maximum = (int)totalBytes;
                    }
                    using (MemoryStream ms = new MemoryStream((int)totalBytes))
                    {
                        Stream st = myrp.GetResponseStream();
                        long totalDownloadedByte = 0;
                        byte[] by = new byte[1024];
                        int osize = st.Read(by, 0, (int)by.Length);
                        while (osize > 0)
                        {
                            totalDownloadedByte = osize + totalDownloadedByte;
                            System.Windows.Forms.Application.DoEvents();
                            ms.Write(by, 0, osize);
                            if (prog != null)
                            {
                                prog.Value = (int)totalDownloadedByte;
                            }
                            osize = st.Read(by, 0, (int)by.Length);
                        }
                        buffer = ms.ToArray();
                        st.Close();
                    }
                }
                catch (Exception ex)
                {
                    buffer = null;
                    Console.WriteLine(ex.Message);
                }
            }
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Silian Lighting+ ( 蜀ICP备14004521号-1 )

    GMT+8, 2024-4-28 04:04 , Processed in 1.062500 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表