>  기사  >  백엔드 개발  >  진행률 표시줄이 있는 C# 다운로드 코드(일반 진행률 표시줄)

진행률 표시줄이 있는 C# 다운로드 코드(일반 진행률 표시줄)

黄舟
黄舟원래의
2017-02-17 10:53:151565검색

<span style="font-size:14px;">     </span>
<pre name="code" class="csharp">
<span style="font-size:14px;">        
/// <summary>  
        /// 下载带进度条代码(普通进度条)  
        /// </summary>  
        /// <param name="URL">网址</param>  
        /// <param name="Filename">下载后文件名为</param>  
        /// <param name="Prog">报告进度的处理(第一个参数:总大小,第二个参数:当前进度)</param>  
        /// <returns>True/False是否下载成功</returns>  
        public static bool DownLoadFile(string URL, string Filename, Action<int, int> updateProgress = null)
        {
            Stream st = null;
            Stream so = null;
             System.Net.HttpWebRequest Myrq =null;
             System.Net.HttpWebResponse myrp = null;
            bool flag = false;
            try
            {
                Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); //从URL地址得到一个WEB请求     
                myrp = (System.Net.HttpWebResponse)Myrq.GetResponse(); //从WEB请求得到WEB响应     
                long totalBytes = myrp.ContentLength; //从WEB响应得到总字节数
                //更新进度
                if (updateProgress != null)
                {
                    updateProgress((int)totalBytes,0);//从总字节数得到进度条的最大值  
                }
                st = myrp.GetResponseStream(); //从WEB请求创建流(读)     
                so = new System.IO.FileStream(Filename, System.IO.FileMode.Create); //创建文件流(写)     
                long totalDownloadedByte = 0; //下载文件大小     
                byte[] by = new byte[1024];
                int osize = st.Read(by, 0, (int)by.Length); //读流     
                while (osize > 0)
                {
                    totalDownloadedByte = osize + totalDownloadedByte; //更新文件大小     
                    Application.DoEvents();
                    so.Write(by, 0, osize); //写流     
                    //更新进度
                    if (updateProgress != null)
                    {
                        updateProgress((int)totalBytes, (int)totalDownloadedByte);//更新进度条 
                    }
                    osize = st.Read(by, 0, (int)by.Length); //读流     
                }
                //更新进度
                if (updateProgress != null)
                {
                    updateProgress((int)totalBytes, (int)totalBytes);
                }
                flag= true;
            }
            catch(Exception )
            {
                flag = false;
                throw;
                //return false;
            }
            finally
            {
                if (Myrq != null)
                {
                    Myrq.Abort();//销毁关闭连接
                }
                if (myrp != null)
                {
                    myrp.Close();//销毁关闭响应
                }
                if (so != null)
                {
                    so.Close(); //关闭流 
                }
                if (st != null)
                {
                    st.Close(); //关闭流  
                }
            }
            return flag;
        }</span>

<br>

<br>

호출 방법 1:

<br>

<span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", new Action<int, int>(
        (int Maximum, int Value)
        =>
        {
            //更新进度条
            progressBar1.Maximum = Maximum;
            progressBar1.Value = Value;
        })
))
{
	//下载文件后的处理
	
	
}</span>

<br>

매개변수 전달 없이 액션 작성 방법:

((Form)form).BeginInvoke(new Action(() =>
            {
                //处理
            })

<br>

호출 방법 2:

<br>

<br>

아아아아

<br>

<br>

아아아아

참고: 호출 코드의 ProgressBar1은 Microsoft의 진행률 표시줄 컨트롤입니다. <br><br>

<br>

URL 예: http:/ / /www.php.cn/

<br>

Windows Server에서 파일을 다운로드하려면 구성이 필요합니다. iis에서 이 디렉터리에 액세스할 수 있습니다.

1. 다운로드해야 하는 파일에 해당하는 디렉터리를 찾습니다.

<br>

2. 오른쪽에서 "디렉토리 찾아보기"를 찾습니다:

<br>

3. "디렉토리 찾아보기"를 마우스 오른쪽 버튼으로 클릭하고 다음을 클릭합니다. 이 기능 열기

<br>

4. 아래 그림을 볼 수 있습니다. 활성화하세요.

<br>

위 내용은 진행바(일반 진행바)가 포함된 C# 다운로드 코드 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요! <br>

<br>

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.