文件下载功能需求
- 页面显示超链接
- 点击超链接后弹出下载提示框
- 完成文件下载
分析
- 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析,则出现下载提示框。
- 使用响应头设置资源打开方式。
- content-disposition:attachment;filename=xxx
实现功能
-
新建servlet获取get方法中的filename参数
-
//获取url中的参数 String filename = req.getParameter("filename");
-
-
判断获取到的参数是否为空
-
if (filename != null && !filename.equals("")) { }else{ }
-
-
如果为空,则输出提示
-
resp.setContentType("text/html;charset=utf-8"); PrintWriter writer = resp.getWriter(); writer.write("文件路径为空,请重新输入。");
-
-
如果不为空,读取文件输出
-
//获取文件输入流 FileInputStream fis = new FileInputStream(filepath); //设置头信息 String mime = context.getMimeType(filename); resp.setContentType(mime); resp.setHeader("content-disposition", "attachment;filename="+filename); //获取Servlet输出流 ServletOutputStream sos = resp.getOutputStream(); //读取文件输入流中的数据,写入到Servlet输出流中 byte[] ch = new byte[1024 * 10]; int len = 0; while ((len = fis.read(ch)) != -1) { esos.write(ch, 0, len); } fis.close
-