基于servlet的文件下载
2016-01-08 10:25
232 查看
package org.lyt.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; } }
web.xml
<servlet> <servlet-name>fileDownLoadServlet</servlet-name> <servlet-class>com.future.zfs.util.FileDownLoadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>fileDownLoadServlet</servlet-name> <url-pattern>/fileDownLoadServlet</url-pattern> </servlet-mapping><a href="fileDownLoadServlet?filename=通讯录.xls">测试文件下载</a>
相关文章推荐
- 【Android基础】Android WebView参数设置详解
- HTML5之---Manifest 文件--离线缓存
- 使用gradle做第一个java项目
- 策略模式总结
- Android或者手机版本号和sdk还有手机型号
- 一篇文章讲清楚android ImageView.ScaleType
- OC-1-8
- unity, imageEffect的最后一步blit所用的shader,应该关闭zwrite和ztest
- 【LeetCode】217. Contains Duplicate(sort,hash,map)
- ARC 完全指南
- Git全解析之用起来先
- 纯代码创建UIDatePicker
- ADB 在 Android SDK 的中的路径
- 统计学习笔记(4)——朴素贝叶斯法
- JSP标签JSTL(4)--URL
- Android Studio中文字体显示乱码
- Runtime之Method Swizzling
- JSP标签JSTL(4)--URL
- (java)Valid Palindrome
- 手把手带你自制Linux系统之六 编译内核及busybox完成系统定制