1 Content-disposition的含义
是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。Content-disposition其实可以控制用户请求所得的内容存为一个文件的时候提供一个默认的文件名,文件直接在浏览器上显示或者在访问时弹出文件下载对话框。
格式说明:
content-disposition = "Content-Disposition" ":" disposition-type *( ";" disposition-parm )
字段说明:
Content-Disposition属性有两种类型:inline 和 attachment
inline :将文件内容直接显示在页面
attachment:弹出对话框让用户下载:disposition-type是以什么方式下载,如attachment为以附件方式下载
disposition-parm为默认保存时的文件名
服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");
2 代码示例
File file = new File("rfc1806.txt"); String filename = file.getName(); response.setHeader("Content-Type","text/plain"); response.addHeader("Content-Disposition","inline;filename=" + new String(filename.getBytes(),"utf-8")); response.addHeader("Content-Length","" + file.length());
3 下载文件名乱码解决方案
if (isIE) { //IE浏览器的乱码问题解决 fileName = URLEncoder.encode(fileName, "UTF-8"); } else { //万能乱码问题解决 fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); } response.setHeader("Content-disposition", "attachment;filename="" + fileName + """); //剩下的就是将文件流输出到response //FileCopyUtils.copy(inputStream, response.getOutputStream);