打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c#下载文件

下载网络资源文件到本地的方法(2种)

首先说明下Page.Response :
命名空间:  System.Web.UI
程序集:  System.Web(在 System.Web.dll 中)
获取与该 Page 对象关联的 HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包

含有关该响应的信息。
方法一(上/下载):
System.Net.WebClient:
提供向 URI 标识的资源发送数据和从 URI 标识的资源接收数据的公共方法。
WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数

据的公共方法。
I、 将数据上载到资源的 WebClient 方法:
OpenWrite  :检索一个用于将数据发送到资源的 Stream。
UploadFile :将本地文件发送到资源,并返回包含任何响应的 Byte 数组。
II、从资源下载数据的 WebClient 方法:
OpenRead   : 从资源以 Stream 的形式返回数据。
DownloadFile : 从资源将数据下载到本地文件。
WebClient client = new WebClient();
client.DownloadFile(address, fileName);
方法二(下载)
使用HttpWebRequest下载文件

[c-sharp] view plaincopy
  1.     /// <summary>          
  2.     /// 下载文件          
  3.     /// </summary>          
  4.     /// <param name="URL">下载文件地址</param>         
  5.     ///   
  6.     /// <param name="Filename">下载后的存放地址</param>          
  7.     /// <param name="Prog">用于显示的进度条</param>          
  8.     ///   
  9.     public string DownloadFile(string URL, string filename)  
  10.     {  
  11.         try  
  12.         {  
  13.             System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)  
  14.   
  15. System.Net.HttpWebRequest.Create(URL);  
  16.             System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse  
  17.   
  18. ();  
  19.             long totalBytes = myrp.ContentLength;  
  20.             if (myrp.ContentLength != 0)  
  21.             {  
  22.                 // MessageBox.Show("文件存在");  
  23.                 System.IO.Stream st = myrp.GetResponseStream();  
  24.                 System.IO.Stream so = new System.IO.FileStream(filename,   
  25.   
  26. System.IO.FileMode.Create);  
  27.                 long totalDownloadedByte = 0;  
  28.                 byte[] by = new byte[1024];  
  29.                 int osize = st.Read(by, 0, (int)by.Length);  
  30.                 while (osize > 0)  
  31.                 {  
  32.                     totalDownloadedByte = osize + totalDownloadedByte;  
  33.                     so.Write(by, 0, osize);  
  34.                     osize = st.Read(by, 0, (int)by.Length);  
  35.                 }  
  36.                 so.Close();  
  37.                 st.Close();  
  38.                 return "success";  
  39.             }else  
  40.             {  
  41.                 MessageBox.Show("文件不存在");  
  42.             }  
  43.         }  
  44.         catch (System.Exception e)  
  45.         {  
  46.             return "下载文件失败!" + e.ToString();  
  47.         }  
  48.     }  

从服务器端下载文件到本地的方法:

[c-sharp] view plaincopy
  1. //I、    
  2.     /// <summary>  
  3.     /// HttpResponse.AddHeader 方法--将一个 HTTP 头添加到输出流。  
  4.     /// public void AddHeader( string name, string value )  
  5.     /// name                              要添加 value 的 HTTP 头名称。   
  6.     /// value                             要添加到头中的字符串。  
  7.     /// Response.Clear() 方法:           清除缓冲区流中的所有内容输出  
  8.     /// HttpRequest.ContentType    属性: 获取或设置传入请求的 MIME 内容类型  
  9.     /// HttpResponse.BinaryWrite() 方法: 将一个二进制字符串写入 HTTP 输出流。  
  10.     /// HttpResponse.Flush()       方法: 向客户端发送当前所有缓冲的输出  
  11.     /// HttpResponse.WriteFile()   方法: 将指定的文件直接写入 HTTP 响应输出流。  
  12.     /// HttpResponse.End()         方法: 将当前所有缓冲的输出发送到客户端,停止该页的执行,  
  13.     ///                                   并引发 EndRequest 事件。  
  14.     /// </summary>  
  15.     /// <param name="fileName"></param> 客户端保存的文件名  
  16.     /// <param name="filePath"></param> 服务端文件路径  
  17.     private void down_load_file(string fileName, string filePath)  
  18.     {  
  19.       //  string fileName = "ce2.rar";  
  20.       //  string filePath = Server.MapPath("keji.rar");//路径  
  21.   
  22.         //以字符流的形式下载文件  
  23.         FileStream fs = new FileStream(filePath, FileMode.Open);  
  24.         byte[] bytes = new byte[(int)fs.Length];  
  25.         fs.Read(bytes, 0, bytes.Length);  
  26.         fs.Close();  
  27.         Response.ContentType = "application/octet-stream";  
  28.         //通知浏览器下载文件而不是打开  
  29.         Response.AddHeader("Content-Disposition""attachment;   filename=" +   
  30.   
  31. HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));  
  32.         Response.BinaryWrite(bytes);  
  33.         Response.Flush();  
  34.         Response.End();  
  35.     }  
  36. //II、  
  37.         string filePath = @"E:/下载地址保存2/1.rar";  
  38.         System.IO.FileInfo file = new System.IO.FileInfo(filePath);  
  39.         if (file.Exists)  
  40.         {  
  41.             Response.Clear();  
  42.             Response.AddHeader("Content-Disposition""attachment; filename=" + file.Name);  
  43.             Response.AddHeader("Content-Length", file.Length.ToString());  
  44.             Response.ContentType = "application/octet-stream";  
  45.             Response.Filter.Close();  
  46.             Response.WriteFile(file.FullName, false);  
  47.             Response.End();  
  48.         }  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C# 从服务器下载文件代码
asp.net mvc如何实现文件下载
ASP.NET 2.0 文件下载功能详解(解决了文件名乱码的情形)
C#导出生成excel文件的方法小结(xml,html方式)
ASP.NET上传文件的几种方法
asp.net 将DataTable中的数据导出到Excel并下载方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服