asp.net下载文件的几种方法
最近做东西遇到了下载相关的问题。在这里总结一下自己处理的方法。
1.以字节流的形式向页面输出数据以下载Excel为例子。
string path=Server.MapPath("文件路径");//这里的文件路径是相对路径
FileStream fs = new FileStream(path, FileMode.Open);//将文件读入到流,当然这里也可以是存在内存中的Excel 并不一定是存在服务器上的文件
byte[] bytes = new byte[(int)fs .Length];
fs .Read(bytes, 0, bytes.Length);//将流写入字节数组
fs .Close();
Response.ContentType ="application/ms-excel";//设置输入类型。这里的类型很多自行百度
//添加http头,这里将文件名进行编码防止乱码。
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("文件下载后的名称", System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);//向客户端输出流。
Response.Flush();
Response.End();
2.WriteFile形式直接下载
这个方式需要服务器上存在相应的文件。
Response.Clear();
Response.ContentType ="application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("文件下载后的名称", System.Text.Encoding.UTF8));
Response.WriteFile(“文件的路径和文件名”);//向客户端输出流。
Response.Flush();
Response.End();
//这种方法重要的地方是要获取文件在服务器上的路径。
3.利用服务器空间gridview或者datagrid
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("文件名", Encoding.UTF8).ToString());
Response.ContentType = "application /ms-excel";
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
gvTM.RenderControl(hw);//这里的gvTM是页面gridview的一个实例化对象,已经有数据源。
//也可以不在页面上显示,GridView gv=new GridView(); gv.DataSource=new datatable(); gv.DataBind();这种方式也是可以的。
Response.Output.Write(tw.ToString());
Response.Flush();
Response.End();
asp.net下载文件的几种方法的更多相关文章
- Asp.Net 下载文件的几种方式
asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法 ...
- Python实现下载文件的三种方法
下面来看看三种方法是如何来下载zip文件的:方法一: import urllib print "downloading with urllib" url = 'http://www ...
- python下载文件的三种方法
Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...
- cmd 环境下载文件的几种方法
今天渗透测试面试提到cmd下载文件 ,自己只写了js和certutil,还有几种常见的方法自己没想起来 这里记录和总结下 . (自己还是太菜太垃圾.) 0x01 certutil certutil ...
- C# 下载文件的四种方法
C# 文件下载四方法 - CSDN论坛 - CSDN.NET using System; using System.Data; using System.Configuration; using Sy ...
- windows和linux之间上传下载文件的两种方法
一 用rz和sz http://blog.csdn.net/register_man/article/details/53860774 http://www.jb51.net/article/7 ...
- linux远程下载文件 的两种方法之 ftp命令和scp命令
ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器 格式:ftp [hostname| ip-ad ...
- Asp.Net保存session的三种方法 (Dll文件更新导致session丢失的解决办法)
1. InProc模式(默认值):asp.net将session保存到当前进程中,这种方式最快,但是不能多台服务器共享session,且会话状态数据容易丢失. <sessionState mod ...
- Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
随机推荐
- Nosql database
http://kb.cnblogs.com/page/42731/ http://nosql-database.org/ http://blog.jobbole.com/1344/ http://ww ...
- bootcamp
为了鄙社自主研发的html5studio和mist,我给Air划了32G装windows囧 第一要注意的是,必须使用bootcamp划分将要安装windows的分区,不要在windows安装过程中删除 ...
- Sed&awk笔记之sed篇
http://blog.csdn.net/a81895898/article/details/8482387 Sed是什么 <sed and awk>一书中(1.2 A Stream Ed ...
- 【UVA12093】Protecting Zonk (树形DP)
题意: 给定一个有n个节点的无根树,有两种装置A和B,每种都有无限多个.在某个节点X使用A装置需要C1的花费,并且此时与节点X相连的边都被覆盖.在某个节点X使用B装置需要C2的花费,并且此时与节点X相 ...
- PL/SQL游标使用
游标是用来处理使用SELECT语句从数据库中检索到的多行记录的工具.借助游标的功能,数据库应用程序可以对一组记录逐个进行处理,每次处理一行. 游标是从数据表中提取出来的数据,以临时表的形式存放在内存中 ...
- 查看Mysql执行计划
使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show processlist; 选择 ...
- Linux Shell编程(23)——文本处理命令
处理文本和文本文件的命令sort文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用 -m 选项, 它将会合并预排序的输入文件. 想了解 ...
- Asp.Net MVC向视图View传值的三种常见的方法:
1.通过View( parameter )的参数传递 action: public ActionResult Index() { Person person=new Person("wumi ...
- (转载)JavaScript中定义变量
(转载)http://blog.163.com/xuxiaoqianhz@126/blog/static/165190577201061594421870/ JavaScript中定义变量有两种方式: ...
- APP界面设计之页面布局的22条基本原则
移动 APP 页面布局(Layout)是我们设计 app 界面的时候,最主要的设计任务.一个 app 的好与不好,很大部分取决于移动 APP 页面布局的合理性. 下图为 APP 最原始的布局模型. 页 ...