ASP.NET(c#)文件下载函数

本文介绍了一个用于下载文件的函数实现细节,包括如何处理重定向、获取文件扩展名、创建目录结构、读取并写入文件流等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

/// <summary>
/// 下载文件函数
/// </summary>
/// <param name="url">下载地址</param>
/// <param name="Path">保存路径</param>
/// <param name="typeName">类型:文件或图片</param>
        private bool DownFile(string url, string Path,string typeName)
        {
            try
             {
                 HttpWebRequest objHttpWebRequest;
                 HttpWebResponse objHttpWebResponse;
                 try
                 {
                     objHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);//send
                     objHttpWebResponse = (HttpWebResponse)objHttpWebRequest.GetResponse();//get
                     objHttpWebRequest.AllowAutoRedirect = true;
                 }
                 catch
                 {
                     return false;
                 }
 
 
                 string AbsoluteUri = objHttpWebResponse.ResponseUri.AbsoluteUri;//It may be Redirect so is necessary to use the AbsoluteUri
                 string Extend = AbsoluteUri.Substring(AbsoluteUri.LastIndexOf(".") + 1);
 
 
                 string GuidName = Guid.NewGuid().ToString();
                 Path = Path + GuidName.Substring(0, 1);
 
 
                 DirectoryInfo objDirectoryInfo = new DirectoryInfo(Path);
                 if (objDirectoryInfo.Exists)
                 {
 
                 }
                 else
                 {
                     objDirectoryInfo.Create();
                 }
 
 
 
                 string FullName = Path + "//" + GuidName + "." + Extend;
 
 
                 Stream objStream = objHttpWebResponse.GetResponseStream();
 
                 Byte[] buffer = new Byte[256];
 
                 int bufferSizeCount = objStream.Read(buffer, 0, 256);
 
                 FileStream objFileStream = new FileStream(FullName, FileMode.Create, FileAccess.Write);
 
                 int sumBufferSizeCount = 0;
 
                 while (bufferSizeCount > 0)
                 {
                     Application.DoEvents();
 
                     objFileStream.Write(buffer, 0, bufferSizeCount);//
                     bufferSizeCount = objStream.Read(buffer, 0, 256);//
                     sumBufferSizeCount += bufferSizeCount;//
                     this.Text = string.Format("[总进度{0}/{1}]  下载进度{2}文件:{3}K  {4}",currentIndex,totalCount, Extend, sumBufferSizeCount / 1024,sumBufferSizeCount);
                 }
 
                 objStream.Close();
                 objFileStream.Close();
                 objHttpWebResponse.Close();
 
 
                 FileInfo objFileInfo = new FileInfo(FullName);
                 int FileSize = Convert.ToInt32(objFileInfo.Length / 1024);
 
                 if (typeName == "image")
                 {
                     ImageFileName = GuidName;
                     ImageExtend = Extend;
                     ImageFileSize = FileSize;
 
                     if (File.Exists(FullName))
                     {
                         System.Drawing.Image image = System.Drawing.Image.FromFile(FullName);
 
                         this.pictureBox1.Image = image;
                     }
                    
                 }
                 else if(typeName == "file")
                 {
                     FileFileName = GuidName;
                     FileExtend = Extend;
                     FileFileSize = FileSize;
                 }
 
                 this.Refresh();
 
                 return true;
              
            }
            catch
            {
                return false;
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值