文件下载
Posted 0error0warning
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件下载相关的知识,希望对你有一定的参考价值。
response.setHeader("Content-Disposition", "attachment; fileName=a.jpg");
这个响应头告诉浏览器。 这是需要下载的。 而 attachment 表示附件, 也就是下载的一个文件。 fileName=后面,表示下载的文件名。
代码:
1 import org.apache.commons.io.IOUtils; 2 import sun.misc.BASE64Encoder; 3 4 import javax.servlet.ServletContext; 5 import javax.servlet.ServletException; 6 import javax.servlet.ServletOutputStream; 7 import javax.servlet.annotation.WebServlet; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpServletResponse; 11 import java.io.IOException; 12 import java.io.InputStream; 13 import java.net.URLEncoder; 14 15 @WebServlet("/downloadServlet") 16 public class DownloadServlet extends HttpServlet { 17 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 18 // 1、获取要下载的文件名 19 String downfile = "a.jpg"; 20 //2、读取要下载的文件内容 (通过ServletContext对象可以读取) 21 ServletContext servletContext = getServletContext(); 22 // 获取要下载的文件类型 23 String mimeType = servletContext.getMimeType("/images/" + downfile); 24 //4、在回传前,通过响应头告诉客户端返回的数据类型 25 response.setContentType(mimeType); 26 //5、还要告诉客户端收到的数据是用于下载使用(还是使用响应头) 27 // Content-Disposition响应头,表示收到的数据怎么处理 28 // attachment表示附件,表示下载使用 29 // filename= 表示指定下载的文件名 30 // url编码是把汉字转换成为%xx%xx的格式 31 // 判断是否是火狐浏览器 32 if (request.getHeader("User-Agent").contains("Firefox")) { 33 // 使用下面的格式进行 BASE64 编码后 34 response.setHeader("Content-Disposition", "attachment; filename==?UTF-8?B?" + new BASE64Encoder().encode("中国.jpg".getBytes("UTF-8")) + "?="); 35 } else { 36 // 把中文名进行 UTF-8 编码操作。 37 response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode("中国.jpg", "UTF-8")); 38 } 39 InputStream resourceAsStream = servletContext.getResourceAsStream("/images/" + downfile); 40 // 获取响应的输出流 41 ServletOutputStream outputStream = response.getOutputStream(); 42 //3、把下载的文件内容回传给客户端 43 // 读取输入流中全部的数据,复制给输出流,输出给客户端 44 IOUtils.copy(resourceAsStream, outputStream); 45 } 46 }
以上是关于文件下载的主要内容,如果未能解决你的问题,请参考以下文章
在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途