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下载文件

/// <summary> /// 下载文件 /// </summary> /// <param name="URL">下载文件地址</param> /// /// <param name="Filename">下载后的存放地址</param> /// <param name="Prog">用于显示的进度条</param> /// public string DownloadFile(string URL, string filename) { 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 (myrp.ContentLength != 0) { // MessageBox.Show("文件存在"); System.IO.Stream st = myrp.GetResponseStream(); System.IO.Stream 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; so.Write(by, 0, osize); osize = st.Read(by, 0, (int)by.Length); } so.Close(); st.Close(); return "success"; }else { MessageBox.Show("文件不存在"); } } catch (System.Exception e) { return "下载文件失败!" + e.ToString(); } }

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

//I、 /// <summary> /// HttpResponse.AddHeader 方法--将一个 HTTP 头添加到输出流。 /// public void AddHeader( string name, string value ) /// name 要添加 value 的 HTTP 头名称。 /// value 要添加到头中的字符串。 /// Response.Clear() 方法: 清除缓冲区流中的所有内容输出 /// HttpRequest.ContentType 属性: 获取或设置传入请求的 MIME 内容类型 /// HttpResponse.BinaryWrite() 方法: 将一个二进制字符串写入 HTTP 输出流。 /// HttpResponse.Flush() 方法: 向客户端发送当前所有缓冲的输出 /// HttpResponse.WriteFile() 方法: 将指定的文件直接写入 HTTP 响应输出流。 /// HttpResponse.End() 方法: 将当前所有缓冲的输出发送到客户端,停止该页的执行, /// 并引发 EndRequest 事件。 /// </summary> /// <param name="fileName"></param> 客户端保存的文件名 /// <param name="filePath"></param> 服务端文件路径 private void down_load_file(string fileName, string filePath) { // string fileName = "ce2.rar"; // string filePath = Server.MapPath("keji.rar");//路径 //以字符流的形式下载文件 FileStream fs = new FileStream(filePath, FileMode.Open); byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); Response.ContentType = "application/octet-stream"; //通知浏览器下载文件而不是打开 Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.BinaryWrite(bytes); Response.Flush(); Response.End(); } //II、 string filePath = @"E:/下载地址保存2/1.rar"; System.IO.FileInfo file = new System.IO.FileInfo(filePath); if (file.Exists) { Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); Response.AddHeader("Content-Length", file.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.Filter.Close(); Response.WriteFile(file.FullName, false); Response.End(); }

你可能感兴趣的:(String,Stream,C#,url,byte,internet)