博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.Net文件下载-使用流输出
阅读量:5343 次
发布时间:2019-06-15

本文共 1772 字,大约阅读时间需要 5 分钟。

 

/// <summary>
  /// 下载文件
  /// 使用流输出
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
   private   void  Button1_Click( object  sender, System.EventArgs e)
  
{
   string sFileName = Server.MapPath("./工作用常用电话号码.xls");
   FileStream fileStream=new FileStream(sFileName,FileMode.Open);
   long fileSize = fileStream.Length; 
   byte[] fileBuffer=new byte[fileSize]; 
   fileStream.Read(fileBuffer, 0, (int)fileSize); 
   //如果不写fileStream.Close()语句,用户在下载过程中选择取消,将不能再次下载
   fileStream.Close();
   Context.Response.ContentType="application/octet-stream"; 
   Context.Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(sFileName,Encoding.UTF8 ));
   Context.Response.AddHeader("Content-Length",fileSize.ToString()); 
   Context.Response.BinaryWrite(fileBuffer); 
   Context.Response.End(); 
   Context.Response.Close();
  }

 

/// <summary>
  /// 下载文件
  /// 直接输出文件方式
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
   private   void  Button2_Click( object  sender, System.EventArgs e)
  
{
   string saveFileName = "工作用常用电话号码.xls";
   Response.Clear();
   Response.Buffer= true;
   //Response.Charset = "utf-8";//可有可无?
   //下面两个语句是一个含义,不知网上的人为什么要加一个this,非常的不解!
   //this.EnableViewState = false;
   EnableViewState = false;
   //Response.ContentType = "application/ms-excel"; //可有可无?
   //Response.ContentEncoding = System.Text.Encoding.UTF8;//可有可无?
   
   //直接写下面的语句,客户端看到的文件名是乱码
   //Response.AppendHeader("Content-Disposition","attachment;filename=" + saveFileName); 
   //必须写成这种
   Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(saveFileName,Encoding.UTF8 ));
   Response.WriteFile(saveFileName); 
   Response.Flush();
   Response.End();//End和Close的顺序是什么,测试时,两个位置排列交换后对执行没有任何影响
   Response.Close();
  }

 

转载于:https://www.cnblogs.com/yuhanzhong/archive/2012/04/25/2469747.html

你可能感兴趣的文章
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>
lintcode83- Single Number II- midium
查看>>
移动端 响应式、自适应、适配 实现方法分析(和其他基础知识拓展)
查看>>
selenium-窗口切换
查看>>
使用vue的v-model自定义 checkbox组件
查看>>