Download After_End/Load_Down_case/src/main/java/Servlet_demo1.java from zxy0307/JavaWeb: direct link, hf CLI and curl.
- Browser
- Download file 2.49 kB
-
https://huggingface.co/zxy0307/JavaWeb/resolve/08aee07d7e2f3b5bea6589e92bb78197a4f61fb9/After_End/Load_Down_case/src/main/java/Servlet_demo1.java
- Command line
-
hf download hf://zxy0307/JavaWeb@08aee07d7e2f3b5bea6589e92bb78197a4f61fb9/After_End/Load_Down_case/src/main/java/Servlet_demo1.java
-
curl -L -o Servlet_demo1.java https://huggingface.co/zxy0307/JavaWeb/resolve/08aee07d7e2f3b5bea6589e92bb78197a4f61fb9/After_End/Load_Down_case/src/main/java/Servlet_demo1.java
2.49 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_demo1 extends HttpServlet { | |
| /* | |
| * 文件下载需求: | |
| 1. 页面显示超链接 | |
| 2. 点击超链接后弹出下载提示框 | |
| 3. 完成图片文件下载 | |
| */ | |
| /* | |
| * 分析: | |
| 1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示,如果不能解析,则弹出下载提示框。-- 不满足需求 | |
| 2. 任何资源都必须弹出下载提示框 -- 我们的需求 | |
| 3. 使用响应头设置资源的打开方式: | |
| * content-disposition:attachment;filename=xxx | |
| */ | |
| 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);//告诉浏览器如何解析 | |
| //设置文件的展示方式 -- 下载下来 | |
| 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); | |
| } | |
| } | |