C# 處理文件,視頻,音頻,壓縮包下載


文章介紹了通過HttpWebRequest和HttpWebResponse實現視頻下載的功能;首先HttpWebRequest類利用HTTP 協議和服務器交互,再由HttpWebResponse返回來自網絡資源的響應,最后由stream類處理數據流,緩存到本地磁盤;

上代碼之前先上一張Demo的圖片,新建一個winform窗體,添加lable控件,ProgressBar和button按鈕,以下僅供參考

using System;
using System.IO;
using System.Net;
using System.Windows.Forms;

namespace FileDownLoad
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string URL = "https://media.w3.org/2010/05/sintel/trailer.mp4";//視頻網絡地址
            string filename = @"D:\視頻下載\\video.mp4";//存儲視頻的文件地址
            DownloadFile(URL, filename, progressBar1);//調用下載方法
        }
        /// <summary>
        /// 下載視頻
        /// </summary>
        /// <param name="URL">請求地址</param>
        /// <param name="filename">緩存的路徑</param>
        /// <param name="prog">進度條</param>
        public void DownloadFile(string URL, string filename, ProgressBar prog)
        {
            try
            {
                float percent = 0;
                HttpWebRequest Myrq = (HttpWebRequest)HttpWebRequest.Create(URL);//請求網絡資源
                HttpWebResponse myrp = (HttpWebResponse)Myrq.GetResponse();//返回Internet資源的響應
                long totalBytes = myrp.ContentLength;//獲取請求返回內容的長度
                if (prog != null)
                {
                    prog.Maximum = (int)totalBytes;//獲取進度條的最大值
                }
                Stream st = myrp.GetResponseStream();//讀取服務器的響應資源,以IO流的形式進行讀寫
                Stream so = new FileStream(filename, 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();//交出CPU控制權,讓系統可以處理隊列中的所有Windows消息 ,防止頻繁讀寫造成程序阻塞或界面停止響應
                    so.Write(by, 0, osize);
                    if (prog != null)
                    {
                        prog.Value = (int)totalDownloadedByte;
                    }
                    osize = st.Read(by, 0, (int)by.Length);//讀取當前字節流的總長度
                    percent = (float)totalDownloadedByte / (float)totalBytes * 100;
                    double perNumber = Math.Round(percent);
                    label1.Text = "系統更新已完成:" + perNumber.ToString() + "%";
                    Application.DoEvents();//此處是為了防止lable1的內容來不及顯示
                }
                so.Flush();
                so.Close();
                st.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

代碼完成,實現下載功能,具體Demo請點擊文末鏈接

 

點擊下載  提取碼:yg4g

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM