response下载文件 (转载)
核心代码:
DataSet ds = dBll.GetList( "ID=" + ID); |
string docName = "a.doc" ; //文件名, |
byte [] file = ( byte [])ds.Tables[0].Rows[0][ "FContent" ]; // "FContent"类型为image string Type = checktype(docName); Response.AddHeader( "Content-Disposition" , "attachment;filename=" + HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8).Replace( "+" , "%20" )); Response.AddHeader( "Content-Length " , file.Length.ToString()); Response.ContentType = Type; Response.BinaryWrite(file); //可以下载二进制文件,如数据库存的image //Response.WriteFile(fliePath);可以下载路径文件 Response.End(); Response.Clear(); /// <summary> /// 根据文件的扩展名来获取对应的“输出流的HTTP MIME“类型 /// </summary> /// <param name="filename"></param> /// <returns></returns> private string checktype( string filename) { string ContentType; switch (filename.Substring(filename.LastIndexOf( "." )).Trim().ToLower()) { case ".asf " : ContentType = "video/x-ms-asf " ; break ; case ".avi " : ContentType = "video/avi " ; break ; case ".doc " : ContentType = "application/msword " ; break ; case ".zip " : ContentType = "application/zip " ; break ; case ".xls " : ContentType = "application/vnd.ms-excel " ; break ; case ".gif " : ContentType = "image/gif " ; break ; case ".jpg " : ContentType = "image/jpeg " ; break ; case "jpeg " : ContentType = "image/jpeg " ; break ; case ".wav " : ContentType = "audio/wav " ; break ; case ".mp3 " : ContentType = "audio/mpeg3 " ; break ; case ".mpg " : ContentType = "video/mpeg " ; break ; case ".mepg " : ContentType = "video/mpeg " ; break ; case ".rtf " : ContentType = "application/rtf " ; break ; case ".html " : ContentType = "text/html " ; break ; case ".htm " : ContentType = "text/html " ; break ; case ".txt " : ContentType = "text/plain " ; break ; default : ContentType = "application/octet-stream " ; break ; } return ContentType; } |
HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8).Replace("+", "%20"));这个可以解决中文文件名中包含空格的问题,UrlEncode编码后会把文件名中的空格转换中+(+转换为%2b),但是浏览器是不能理 解加号为空格的,所以在浏览器下载得到的文件,空格就变成了加号;
解决办法:UrlEncode 之后, 将 “+” 替换成 “%20″,因为浏览器将%20转换为空格
response下载文件 (转载)的更多相关文章
- Struts2学习笔记--使用Response下载文件和Struts2的StreamResult文件下载
使用Response下载文件,servlet中的文件下载是通过流来实现的 我在webRoot文件夹下新建了一个文件夹from,里边放了一张图片,这里就以下载这张图片为例:download.jsp很 ...
- servlet 中通过response下载文件
public class ResponseDemo3 extends HttpServlet { private static final long serialVersionUID = -52329 ...
- ajax请求不能下载文件(转载)
最近在做文件下载,后台写了个控制层,直接走进去应该就可以下载文件,各种文件图片,excel等 但是起初老是下载失败,并且弹出下面的乱码: 前台请求代码: $('#fileexcel').unbind( ...
- ajax中没法用response下载文件啊
ajax 下载不太现实第一,http 不支持直接的二进制传输,二进制数据需要编码 例如base64 ,这点服务器端可以实现第二,客户端获得编码后的文件要转换,js应该也可以第三点,最为致命,js无法操 ...
- response 下载文件
String basePath = "D://test.json"; String filename = basePath.substring(basePath.lastIndex ...
- ASP.NET Response 下载文件
private void DownLoad(string fileName, string path) { FileInfo fi = new FileInfo(path); if (fi.Exist ...
- response 下载文件火狐浏览器文件名乱码问题
string path = Server.MapPath(Url.Content("~/") + "UploadFiles/Template/"); ...
- Ajax下载文件(页面无刷新)
说明:Ajax是无法实现文件传输的,本文只是模拟了Ajax不刷新页面就可以请求并返回数据的效果.实质上还是通过提交form表单来返回文件流的输出. 分步实现逻辑: ajax请求服务器,访问数据库,根据 ...
- Servlet 上传下载文件
上传文件 1)在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮 2)表单需要上传文件时,需指定表单 enctype 的值 ...
随机推荐
- 对于JQuery的一些见解
jQuery是什么?(了解) www.github.com jQuery 其实就是一堆的js函数,是普通的js,只不过应用广泛,形成了行业标准. 参考书:锋利的jQuery 学习参考:http:// ...
- UseFul Collection
....... 啦啦啦,test... http://bbs.csdn.net/topics/380175613 http://zhidao.baidu.com/question/580940892. ...
- 151102SQL语句
$condition = array($pk=>array('in',explode(',',$id)));//??? $this->model->where($condition) ...
- CentOS 7安装Mysql并设置开机自启动
CentOS 7不带Mysql数据库了,默认的数据库是MariaDB(Mysql的一个分支). 可以按照以下步骤手动安装Mysql数据库. 1. 下载rpm安装文件 wget http://repo. ...
- 标准DSO设置
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 程序设计入门——C语言 第4周编程练习 2 念整数(5分)
题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意,每个字的拼音之间有一 ...
- CSS 3 动画2D
动画分为两种,1,逐帧动画 组成动画的每一个画面就是一帧 2,关键帧动画,确定关键帧电脑会自动过度 动画中如果遇到不兼容的问题也是要加前缀 @-webkit-keyframes规则 @-webk ...
- OpenCV图像处理中常用函数汇总(2)
// 霍夫线变换 hough vector<Vec2f> lines;//定义一个矢量结构lines用于存放得到的线段矢量集合 HoughLines(dstImage,lines,,CV_ ...
- selenium 安装与 chromedriver安装
直接使用pip安装 pip slenium 用 Chrome 浏览器来测试 from selenium import webdriver browser = webdriver.Chrome() ...
- linux 查看剩余内存数
返回的是kb的数值 cat /proc/meminfo | grep MemFree | cut -d ":" -f2 | sed -e 's/\(^ *\)//' -e 's/\ ...