之前项目中一直遇到的都是下载pdf,word啦,等等等等
public static Boolean downLoadPdf(HttpServletResponse res,String filePath, String fileName){
try {
//设置要下载的文件的名称
res.setHeader("Content-disposition", "attachment;fileName=" + fileName);
//通知客服文件的MIME类型
res.setContentType("application/pdf;charset=UTF-8");
//获取文件的路径
FileInputStream input = new FileInputStream(filePath);
OutputStream out = res.getOutputStream();
byte[] b = new byte[2048];
int len;
while ((len = input.read(b)) != -1) {
out.write(b, 0, len);
}
//修正 Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作簿的来源,请点击"是"
res.setHeader("Content-Length", String.valueOf(input.getChannel().size()));
input.close();
return true;
} catch (IOException ex) {
System.err.println("getApplicationTemplate :"+ ex);
return false;
}
}
这个就是下载的一段代码,但某一天突然说要预览文件,就很懵。。。。
上网找了好多代码,发现好使,就做了一个无脑的搬运工 =_=!!
后来我才发现,预览与下载之间只是多一行代码的差别
res.setHeader("Content-disposition", "attachment;fileName=" + fileName);
**
Content-disposition 起了一个很重要的作用
**
Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。
格式说明: content-disposition = “Content-Disposition” “:” disposition-type *( “;” disposition-parm )
字段说明:Content-Disposition为属性名disposition-type是以什么方式下载,如attachment为以附件方式下载disposition-parm为默认保存时的文件名服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment:
Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。
当 IE 浏览器接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。
Content-Disposition 就是当用户想把请求所得的内容存为一个文件的时候提供一个默认的文件名。
示例:
Content-Disposition: inline
Content-Disposition: attachment
Content-Disposition: attachment; filename=“filename.jpg”