基于servlet的文件下载
package com.future.zfs.util; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @SuppressWarnings("serial") public class FileDownLoadServlet extends HttpServlet{ @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path=request.getParameter("filename"); path=new String(path.getBytes("ISO-8859-1"),"utf-8"); download(path,request,response); } @SuppressWarnings("deprecation") public HttpServletResponse download(String path,HttpServletRequest request, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(request.getRealPath("/")+"/"+path); // 取得文件名。 String filename = file.getName(); // 取得文件的后缀名。 //String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase(); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(file)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); // 设置response的Header response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8"),"ISO-8859-1")); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); } return response; } }
1 <servlet> 2 <servlet-name>fileDownLoadServlet</servlet-name> 3 <servlet-class>com.future.zfs.util.FileDownLoadServlet</servlet-class> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>fileDownLoadServlet</servlet-name> 7 <url-pattern>/fileDownLoadServlet</url-pattern> 8 </servlet-mapping> 9 </servlet>
1 <a href="fileDownLoadServlet?filename=通讯录.xls">哈哈,测试文件下载</a>
本文转自互联网,有如侵权,请及时与我联系 huayalong415@163.com