TransmitFile实现下载     protected void Button1_Click(object sender, EventArgs e)      {         /*           微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite           下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。           代码如下:          */

Response.ContentType = "application/x-zip-compressed";          Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");         string filename = Server.MapPath("DownLoad/aaa.zip");          Response.TransmitFile(filename);      }

//WriteFile实现下载     protected void Button2_Click(object sender, EventArgs e)      {         /*           using System.IO;                   */

string fileName ="aaa.zip";//客户端保存的文件名         string filePath=Server.MapPath("DownLoad/aaa.zip");//路径

FileInfo fileInfo = new FileInfo(filePath);          Response.Clear();          Response.ClearContent();          Response.ClearHeaders();          Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);          Response.AddHeader("Content-Length", fileInfo.Length.ToString());          Response.AddHeader("Content-Transfer-Encoding", "binary");          Response.ContentType = "application/octet-stream";          Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");          Response.WriteFile(fileInfo.FullName);          Response.Flush();          Response.End();      }

//WriteFile分块下载     protected void Button3_Click(object sender, EventArgs e)      {

string fileName = "aaa.zip";//客户端保存的文件名         string filePath = Server.MapPath("DownLoad/aaa.zip");//路径

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);

if (fileInfo.Exists == true)          {             const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力             byte[] buffer = new byte[ChunkSize];

Response.Clear();              System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);             long dataLengthToRead = iStream.Length;//获取下载的文件总大小              Response.ContentType = "application/octet-stream";              Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));             while (dataLengthToRead > 0 && Response.IsClientConnected)              {                 int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小                  Response.OutputStream.Write(buffer, 0, lengthRead);                  Response.Flush();                  dataLengthToRead = dataLengthToRead - lengthRead;              }              Response.Close();          }      }

//流方式下载     protected void Button4_Click(object sender, EventArgs e)      {         string fileName = "aaa.zip";//客户端保存的文件名         string filePath = Server.MapPath("DownLoad/aaa.zip");//路径

//以字符流的形式下载文件          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();

}

WriteFile实现下载的更多相关文章

  1. 转(Response.WriteFile 无法下载大文件解决方法)

    以前用Response.WriteFile(filename),但当遇到大文件时无法完整下载. 该方法最大的问题,它不是直接将数据抛到客户端,而是在服务器端(IIS)上缓存.当下载文件比较大时,服务器 ...

  2. .net中 登录 才能下载文件的方法 Response.WriteFile实现下载

    protected void Button2_Click(object sender, EventArgs e) { //可以在这里加是否登录的判断 string fileName = "c ...

  3. .net 下载文件几种方式

    方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件. protected void Button1_Click(object sender, ...

  4. asp.net下载文件几种方式

    测试时我以字符流的形式下载文件,可行,前几个仅作参考 protected void Button1_Click(object sender, EventArgs e)  {  /*  微软为Respo ...

  5. web开发下的各种下载方法

    利用TransmitFile方法,解决Response.BinaryWrite下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题. 代码如下: Response.Co ...

  6. C# 从服务器下载文件代码的几种方法

    一.//TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一 ...

  7. Asp.Net 之 下载文件的常用方式

    1.直接使用Response.TransmitFile(filename)方法 protected void Button_Click(object sender, EventArgs e) { /* ...

  8. .net中下载文件的方法(转)

    .net中下载文件的方法 一.//TransmitFile实现下载      protected void Button1_Click(object sender, EventArgs e)      ...

  9. Asp.Net 下载文件的几种方式

    asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法 ...

随机推荐

  1. Tomcat_修改代码后tomcat是否需要重启

      在修改一个类时,如果没有修改到已经贮存于虚拟机的实例,在你重新编译后,发布至classes,都不需要重启. 怎样才叫已经贮存于虚拟机的实例呢: 1.成员变量 2.类名称 3.方法名 ………… 如果 ...

  2. 读JS高级API笔记_(DOM&&DOM2&&DOM3)哎呀——园龄才9个月啊

    ---恢复内容开始--- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  3. 洛谷P1908 求逆序对 [归并排序]

    题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游 戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样 ...

  4. 排序算法二(时间复杂度为O(N*logN))

    快速排序: 1 package test; public class QuickSort { // 快速排序 public void quickSort(int s[], int l, int r) ...

  5. git分支与版本管理、版本回退、冲突解决记录

    一.基础使用 1.初始化本地仓库 git init 2.关联远程仓库 git remote add origin git@github.com:用户名/仓库名.git 3.添加远程仓库文件到本地 gi ...

  6. POJ3020Antenna Placement(最小路径覆盖+重在构图)

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7788   Accepted: 3880 ...

  7. Python socket编程之三:模拟数据库循环发布数据

    1. f1.py # -*- coding: utf-8 -*- import socket import struct import sqlalchemy import pandas ####### ...

  8. codejumper的跳转代码

    public void JumpToSource(vsCMPart location = vsCMPart.vsCMPartNavigate) { TextPoint startPoint = Ori ...

  9. WebBrowser 禁用右键

    禁用错误脚本提示 将 WebBrowser控件的 ScriptErrorsSuppressed 设为 true 禁用右键菜单 将 WebBrowser 的 IsWebBrowserContextMen ...

  10. ID

    id 编辑 身份标识号.账号.唯一编码.专属号码.工业设计.国家简称.法律词汇.通用账户.译码器.软件公司等,各类专有词汇缩写. 身份证,身份识别,是一种身份证明. 中文名 身份证,帐号,工业设计,通 ...