编写一个Servlet用于处理文件下载
- @WebServlet("/file")
- public class FileServlet extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- resp.setContentType("image/png");
- OutputStream outputStream = resp.getOutputStream();
- InputStream inputStream = Resources.getResourceAsStream("icon.png");
-
- }
- }
引入IO一个工具库
- <dependency>
- <groupId>commons-iogroupId>
- <artifactId>commons-ioartifactId>
- <version>2.6version>
- dependency>
使用此类库可以快速完成IO操作:
- resp.setContentType("image/png");
- OutputStream outputStream = resp.getOutputStream();
- InputStream inputStream = Resources.getResourceAsStream("icon.png");
- //直接使用copy方法完成转换
- IOUtils.copy(inputStream, outputStream);
在前端页面添加一个链接,用于下载此文件
- <hr>
- <a href="file" download="icon.png">点我下载高清资源a>
前端编写
注意必须添加`enctype="multipart/form-data"`,来表示此表单用于文件传输。
- <form method="post" action="file" enctype="multipart/form-data">
- <div>
- <input type="file" name="test-file">
- div>
- <div>
- <button>上传文件button>
- div>
- form>
编写一下Servlet代码
必须添加`@MultipartConfig`注解来表示此Servlet用于处理文件上传请求
- @MultipartConfig//表示用于文件传输
- @WebServlet("/file")
- public class FileServlet extends HttpServlet {
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- try(FileOutputStream stream = new FileOutputStream("(推荐绝对路径)/Users/nagocoler/Documents/IdeaProjects/WebTest/test.png")){
- Part part = req.getPart("test-file");(表单名称)
- IOUtils.copy(part.getInputStream(), stream);
- resp.setContentType("text/html;charset=UTF-8");
- resp.getWriter().write("文件上传成功!");
- }
- }
- }