Download After_End/Load_Down_case/src/main/java/Servlet_demo2.java from zxy0307/JavaWeb: direct link, hf CLI and curl.
- Browser
- Download file 2.37 kB
-
https://huggingface.co/zxy0307/JavaWeb/resolve/08aee07d7e2f3b5bea6589e92bb78197a4f61fb9/After_End/Load_Down_case/src/main/java/Servlet_demo2.java
- Command line
-
hf download hf://zxy0307/JavaWeb@08aee07d7e2f3b5bea6589e92bb78197a4f61fb9/After_End/Load_Down_case/src/main/java/Servlet_demo2.java
-
curl -L -o Servlet_demo2.java https://huggingface.co/zxy0307/JavaWeb/resolve/08aee07d7e2f3b5bea6589e92bb78197a4f61fb9/After_End/Load_Down_case/src/main/java/Servlet_demo2.java
2.37 kB
| import javax.servlet.ServletContext; | |
| 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 java.io.FileInputStream; | |
| import java.io.IOException; | |
| /** | |
| * 中文文件名问题 | |
| */ | |
| public class Servlet_demo2 extends HttpServlet { | |
| /* | |
| * 解决思路: | |
| 1. 获取客户端使用的浏览器版本信息 | |
| 2. 根据不同的版本信息,设置filename的编码方式不同 | |
| */ | |
| public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { | |
| //1. 定义页面,编辑超链接href属性,指向Servlet_demo1,传递资源名称filename | |
| //2、获取请求参数,文件名称 | |
| String filename = request.getParameter("filename"); | |
| //3、读取文件 -- 找到文件真实路径,读入内存,输出文件流 | |
| ServletContext servletContext = this.getServletContext(); | |
| String realPath = servletContext.getRealPath("/img/" + filename); | |
| FileInputStream fileInputStream = new FileInputStream(realPath);//加载文件,进入内存 | |
| //4、设置response的响应头 | |
| String mimeType = servletContext.getMimeType(filename);//获取文件类型 | |
| response.setContentType(mimeType);//告诉浏览器如何解析 | |
| //解决中文文件名乱码问题 | |
| //获取user-agent请求头 | |
| String agent = request.getHeader("user-agent"); | |
| filename = DownLoadUtils.getFileName(agent, filename); | |
| //设置文件的展示方式 -- 下载下来 | |
| response.setHeader("content-disposition", "attachment;filename=" + filename); | |
| //输出 | |
| ServletOutputStream outputStream = response.getOutputStream(); | |
| byte[] bytes = new byte[1024 * 8]; | |
| int len = 0; | |
| while ((len = fileInputStream.read(bytes)) != -1) { | |
| outputStream.write(bytes, 0, len); | |
| } | |
| //关闭流 | |
| fileInputStream.close(); | |
| } | |
| public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { | |
| this.doGet(request, response); | |
| } | |
| } | |