文件下载 Servlet实现

来源:互联网 发布:北京软件 编辑:程序博客网 时间:2024/04/28 03:35
1、定义下载文件的Servlet
public class DownloadServlet extends HttpServlet {   private static final long serialVersionUID = 1L; public DownloadServlet() {  super(); } // 完成下载功能 public void doGet(HttpServletRequest request, HttpServletResponse response) {  try {   String strDir = "download";   String[] strArr = request.getRequestURI().split("/");   String strFile = strArr[strArr.length - 1];   String path = getServletContext().getRealPath("/");   File file = new File(path + File.separator + strDir     + File.separator + strFile);   if (!file.exists()) {    response.setCharacterEncoding("UTF-8");    PrintWriter pWriter = response.getWriter();    response.setHeader("content-type", "text/html; charset=utf-8");    pWriter.println("<script language=\"javascript\" type=\"text/javascript\">alert('附件不存在!'); window.history.back(-1);</script>");    return;   }   response.setContentType("application/x-download"); // 设置格式   response.setContentLength((int) file.length());// 设置文件大小   response.setHeader("Content-Dispostion", "attachment;filename="+ strFile); // attachment设置成下载文件name   FileInputStream input = new FileInputStream(file);   ServletOutputStream out = response.getOutputStream();   byte[] buf = new byte[2048];   int len;   while ((len = input.read(buf)) != -1) {    out.write(buf, 0, len);   }   input.close();   out.flush();   out.close();  } catch (Exception ex) {   ex.printStackTrace();  } } public void doPost(HttpServletRequest request, HttpServletResponse response) {  doGet(request, response); } public void process(HttpServletRequest request, HttpServletResponse response) {  doPost(request, response); }}
2、在web.xml中配置Servlet
<servlet>   <servlet-name>DownloadServlet</servlet-name>   <servlet-class>com.s2ss.demo.servlet.DownloadServlet</servlet-class> </servlet> <servlet-mapping>  <servlet-name>DownloadServlet</servlet-name>  <url-pattern>/download</url-pattern>  <url-pattern>/download/*</url-pattern> </servlet-mapping>
3、页面
<a href="download/filename" ><font color="red">下载这个文件</font></a>

0 0
原创粉丝点击