最近做东西遇到了下载相关的问题。在这里总结一下自己处理的方法。

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下载文件的几种方法的更多相关文章

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

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

  2. Python实现下载文件的三种方法

    下面来看看三种方法是如何来下载zip文件的:方法一: import urllib print "downloading with urllib" url = 'http://www ...

  3. python下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

  4. cmd 环境下载文件的几种方法

    今天渗透测试面试提到cmd下载文件  ,自己只写了js和certutil,还有几种常见的方法自己没想起来 这里记录和总结下 . (自己还是太菜太垃圾.) 0x01 certutil certutil ...

  5. C# 下载文件的四种方法

    C# 文件下载四方法 - CSDN论坛 - CSDN.NET using System; using System.Data; using System.Configuration; using Sy ...

  6. windows和linux之间上传下载文件的两种方法

    一    用rz和sz http://blog.csdn.net/register_man/article/details/53860774 http://www.jb51.net/article/7 ...

  7. linux远程下载文件 的两种方法之 ftp命令和scp命令

    ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器  格式:ftp [hostname| ip-ad ...

  8. Asp.Net保存session的三种方法 (Dll文件更新导致session丢失的解决办法)

    1. InProc模式(默认值):asp.net将session保存到当前进程中,这种方式最快,但是不能多台服务器共享session,且会话状态数据容易丢失. <sessionState mod ...

  9. Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

随机推荐

  1. windows相关小知识

    获得本机MAC1 快捷键win+R打开运行窗口, 输入cmd回车进入控制台2 输入ipconfig -all  找到本地连接中的物理地址 根据IP获得MAC方法:1 进入cmd控制台,执行:ping ...

  2. 对Gearman中client,worker,jobserver的理解

    在gearman的官网http://gearman.org/有以下的一段说明 A Gearman powered application consists of three parts: a clie ...

  3. jx3dps开发日记

    2014.11.13 子级过滤 关于optgroup这个东西,一开始以为是个包裹元素,但是一般来说,包裹元素给一个class,那么让这个class show()应该它包裹的元素也跟随show,可结果是 ...

  4. bzoj 1501: [NOI2005]智慧珠游戏 Dancing Link

    1501: [NOI2005]智慧珠游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 190  Solved: 122[Submit][Status] ...

  5. C语言中exit()与return的区别

    整理自exit函数和return函数 1.exit函数和return函数的主要区别是: 1)exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的.main函数结束时也会隐式地调用e ...

  6. quartz定时任务时间配置

    quartz定时任务时间设置描述(2011-03-03 16:23:50)转载▼标签: quartz时间it 分类: 凌乱小记  这些星号由左到右按顺序代表 :     *    *     *    ...

  7. 单片机Keil软件仿真与调试技巧

    一.引言 单片机软件开发过程中,软件调试遇到的各种问题常令初学者感到不知所措.实际上.各种仿真开发软件的程序调试基本方法和技巧大同小异,掌握正确的程序调试基本技巧.对于排查这些程序错误问题可以起到举一 ...

  8. 【狼】unity3d iTween插件的学习

    之前在一个三消游戏项目中接触到iTween,最近又要用到,发现iTween真的是一个很好用,省事的插件,有很多函数里包括 Hashtable的他都用一个函数很简单的完成了, 举几个例子 void Lo ...

  9. Android客户端调用Asp.net的WebService

    Android客户端调用Asp.net的WebService 我来说两句 |2011-11-23 13:39:15 在Android端为了与服务器端进行通信有几种方法:1.Socket通信2.WCF通 ...

  10. UVA 11021 Tribles(递推+概率)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059 [思路] 递推+概率. 设f[i]表示一只Tribble经 ...