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();
时间: 2024-08-25 23:57:46

asp.net下载文件的几种方法的相关文章

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

asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题. 代码如下: */ Response.ContentType = "application/x-zip-compressed";

PHP下载文件的两种方法

PHP下载文件的两种方法与代码分享 转自:http://www.cnblogs.com/cfinder010/p/3197195.html PHP实现下载文件的两种方法.分享下,有用到的朋友看看哦. 方法一: <?php /** * 下载文件 * header函数 **/header('Content-Description: File Transfer');header('Content-Type: application/octet-stream');header('Content-Disp

python下载文件的三种方法

Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法requests. 下面来看看三种方法是如何来下载zip文件的:方法一: import urllib import urllib2 import requests print "downloading with urllib" url = 'http://***/test/demo.zip

从网络上下载文件的两种方法

两种方法使用的Com函数都来源于UrlMon,记得先引用. 一.URLDownloadToFile 直接下载文件到磁盘,URLDownloadToFile声明如下: function URLDownloadToFile(    Caller: IUnknown;     URL: PWideChar;           { 下载的路径 }    FileName: PWideChar;   { 保存到的路径 }    Reserved: DWORD;    StatusCB: IBindSta

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

ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器  格式:ftp [hostname| ip-address] a)在linux命令行下输入:ftp 192.168.26.66 b)服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可. 2. 下载文件 下载文件通常用get和mget这两条命令. a) get  格式:get [remote-file] [local-file] 将

实现点击下载文件的几种方法

标签:文件下载,技巧 在实现点击下载文件有多种方法: 后端设置header信息 通过后端告诉浏览器header信息实现下载: header('Content-type: image/jpeg'); header("Content-Disposition: attachment; filename='download.jpg'");  局限: 需要后端配合. 直接跳转到目标文件的地址 使用window.open()或者location.href或者直接使用<a>标签将页面跳转

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

ftp命令: 服务器有安装ftp Server,另外一台linux可以使用ftp的client程序来进行文件的拷贝读取和下载. 1. 连接ftp服务器  格式:ftp [hostname| ip-address] a)在linux命令行下输入:ftp 192.168.26.66 b)服务器询问你用户名和口令,分别输入用户名和相应密码,待认证通过即可. 2. 下载文件 下载文件通常用get和mget这两条命令. a) get  格式:get [remote-file] [local-file] 将

ASP.NET上传文件的几种方法

//上传文件实例 if (fileDealer.HasFile)//判断文件是否存在        {            string filepath = "";            try            {                string path = fileDealer.FileName;                string filename = path.Split('.')[0] + "_" + DateTime.Now

Python下载网页的几种方法

get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在servlet/jsp中就无法处理发挥java的比如vector之类的功能). post方式:就传输方式讲参数会被打包在数据报中传输,从CONTENT_LENGTH这个环境变量中读取,便于传送较大一些的数据,同时因为不暴露数据在浏览器的地址栏中,安全性相对较高,但这样的处理效率会受到影响. get