web项目,文件下载的Servlet示例
2020-01-15 11:54
260 查看
文件下载的Servlet
package com.web.servlet; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.util.mime.MimeUtility; import eu.bitwalker.useragentutils.UserAgent; /** * 文件下载 * @title DownloadServlet.java */ @WebServlet("/download") public class DownloadServlet extends HttpServlet { private static final long serialVersionUID = -4891566202618309888L; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取下载文件的路径 String path = request.getSession().getServletContext().getRealPath("/upload"); //System.out.println(path); //String filename = "girl.jpg"; String fileName = "美女.jpg"; String encodedFileName = null; String userAgentString = request.getHeader("User-Agent"); String browser = UserAgent.parseUserAgentString(userAgentString).getBrowser().getGroup().getName(); // 根据浏览器的不同处理中文乱码 if(browser.equals("Chrome") || browser.equals("Internet Exploer") || browser.equals("Safari")) { // 设置下载头 encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-Disposition", "attachment;fileName=\"" + encodedFileName + "\""); } else if (browser.equals("Firefox")) { // 设置下载头 encodedFileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1"); response.setHeader("Content-Disposition", "attachment;fileName=\"" + encodedFileName + "\""); } else if(browser.equals("Microsoft Edge")) { // 设置下载头 encodedFileName = URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-Disposition", "attachment;fileName*=UTF-8'zh_cn'" + encodedFileName); } else { // 设置下载头 encodedFileName = MimeUtility.decodeText(fileName); response.setHeader("Content-Disposition", "attachment;fileName=\"" + encodedFileName + "\""); } // 创建输入流 FileInputStream is = new FileInputStream(new File(path, "girl.jpg")); // D:\software\Programer\Server\tomcat-8.5.34\webapps\web04\\upload\girl.jpg //new FileInputStream(path + "\\" + filename); // 创建输出流 ServletOutputStream os = response.getOutputStream(); byte[] b = new byte[1024]; int len; while((len = is.read(b)) != -1) { os.write(b, 0, len); } } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Servlet实现web站点文件下载功能示例
- BizTalk 2006 简单入门示例程序 Version 2.0(附源项目文件下载)
- Eclipse web项目中Servlet文件无法运行原因
- web项目文件的下载
- java web上传文件至非项目路径并配置tomcat虚拟路径进行下载
- web项目文件下载
- 【javaweb:servlet】客户端请求服务端进行文件下载的demonstration
- 【javaweb:servlet】从服务端下载中文名称文件应该注意的问题!!!
- 使用Maven创建Web项目后,jsp引入静态文件提示报错。JSP 报错:javax.servlet.ServletException cannot be resolved to a type
- JavaWeb实现文件上传下载功能实例解析以及项目工程示例下载
- 在java的WEB项目如何防止浏览器直接打开下载的文件
- WEB项目中如何实现禁止下载文件(一)
- web项目,文件上传的servlet和下线注销登录的servlet实例。
- 一个项目中调用另外一个项目中下载文件的servlet来下载本项目中的资源
- 在tomcat里部属web程序,访问servlet时总是弹出文件下载安全警告
- Web项目中使用java Struts2实现Zip、xml文件的动态创建和下载(Zip文件中动态存在多个xml文件)
- 使用Maven创建Web项目后,jsp引入静态文件提示报错。JSP 报错:javax.servlet.ServletException cannot be resolved to a type
- WEB项目中如何实现禁止下载文件(二)
- web项目下载TXT文件防止浏览器直接打开
- 使用Maven创建Web项目后,jsp引入静态文件提示报错。JSP 报错:javax.servlet.ServletException cannot be resolved to a type