javaweb之response实现文件下载(文件名是中文名需要经过url编码)
2014-03-06 15:56
826 查看
package test.response; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //response实现文件下载,文件在WebRoot下的download目录下 public class ResponseDemo2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 要实现文件下载,首先要获取到被下载的资源,也就是在servlet中读取资源 // 并且要读取到资源的名称,所以要用servletContext对象得到资源的绝对路径 String path = this.getServletContext().getRealPath("/download/1.jpg"); // 得到文件名,如果是中文的文件名需要经过url编码 // String filename = path.substring(path.lastIndexOf("\\") + // 1);//文件名是1.jpg String filename = path.substring(path.lastIndexOf("\\") + 1);// 文件名是中文.jpg // 输出下载的响应头,如果下载的文件是中文名,文件名需要经过url编码URLEncoder.encode(filename, "UTF-8") // response.setHeader("content-disposition", "attachment;filename=" + // filename); response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8")); // 创建读取文件的流 InputStream in = new FileInputStream(path); // 创建输出文件的流,也就是response的OutputStream OutputStream out = response.getOutputStream(); // 进行读取并写出,是以前学习io的模版代码 byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } in.close(); out.close(); // 上面的读取和输出的代码写完了并不管作用,那么样只是单纯的读取和输出,是不能实现文件下载的,想要实现文件下载,还要先向浏览器输出一个响应头 // response.setHeader("content-disposition", "attachment;filename="+ // filename); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
相关文章推荐
- Java实现文件下载并解决中文文件名乱码
- javaweb-使用servlet实现文件下载
- JavaWeb开发中,文件下载的时候,ie和firefox文件名的处理
- java实现文件下载的工具类-----------什么都可以下载,只要传入response和文件路径 两个参数
- Java Web应用程序实现基础的文件下载功能的实例讲解
- JavaWeb中struts2实现文件上传下载功能实例解析
- JAVA应用XFire框架来实现WebServie的大文件传输功能之一(下载)
- javaweb-day06-1 (Servlet - Response - 输出中文、输出1、中文名字的文件下载、字符流读图片会导致数据丢失的剖析)
- 用java实现文件下载,提示java.lang.IllegalStateException: getOutputStream() has already been called for this response
- Java实现文件下载并解决中文文件名乱码
- SpringMVC整合fastdfs-client-java实现web文件上传下载
- c# 使用FtpWebRequest,FtpWebResponse ,Stream 实现获取文件列表及下载
- java通过struts实现web中的文件下载
- Java通过HttpServletResponse下载文件并避免文件名乱码
- java通过struts实现web中的文件下载
- java基于Apache FTP实现文件上传、下载、修改文件名、删除
- javaweb 结合 springmvc 实现的 文件下载(Maybe myself do like this?)
- java web 下实现文件下载
- JavaWeb之实现文件上传与下载
- SpringMVC整合fastdfs-client-java实现web文件上传下载