Servlet p8 文件的上传和下载

打印 上一主题 下一主题

主题 864|帖子 864|积分 2592

文件的上传和下载

在上网的时候我们常常遇到文件上传的情况,例如上传头像、上传资料等:当然除了上传,遇见下载的情况
也很多,接下来看看我们servlet中怎么实现文件的上传和下载。
文件上传

文件上传涉及到前台页面的编写和后台服务器端代码的编写,前台发送文件,后台接收并保存文件,这才是
一个完整的文件上传。
前台页面

在做文件上传的时候,会有一个上传文件的界面,首先我们需要一个表单,并目表单的请求方式为POST;其次我们的form表单的enctype必须设为 "multipart/form-data",enctype="multipart/form-data”,意思是设置表单的类型为文件上传表单,默认情况下这个表单类型是 "application/.x-www-form-urlencoded",不能用于文件上传,只有使用了multipart/form-data才能完整地传递文件数据。
前台页面代码:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>文件上传</title>
  6. </head>
  7. <body>
  8.    
  9.     <form method="post" enctype="multipart/form-data" action="uploadServlet">
  10.         姓名:<input type="text" name="uname"><br>
  11.         文件:<input type="file" name="myfile"><br>
  12.         
  13.         <button>提交</button>
  14.     </form>
  15. </body>
  16. </html>
复制代码
后台实现

使用注解 @MultipartConfig 将一个Servlet标识为支持文件上传。Servlet将multipart/form-data的
POST请求封装成Part,通过Part对上传的文件进行操作。
代码实现:
  1. import javax.servlet.ServletException;
  2. import javax.servlet.annotation.MultipartConfig;
  3. import javax.servlet.annotation.WebServlet;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import javax.servlet.http.Part;
  8. import java.io.IOException;
  9. /**
  10. * @author: 86199
  11. * @date: 2023/7/3 15:34
  12. * Description: 文件上传后台代码
  13. */
  14. @WebServlet("/uploadServlet")
  15. @MultipartConfig //如果是文件上传,必须设置该注解
  16. public class uploadServlet extends HttpServlet {
  17.     @Override
  18.     protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  19.         System.out.println("文件上传....");
  20.         //设置请求的编码格式
  21.         req.setCharacterEncoding("UTF-8");
  22.         //获取普通表单项
  23.         String uname = req.getParameter("uname");
  24.         System.out.println("uname = " + uname);
  25.         //文件上传表单
  26.         //获取part对象(Servlet 会将 multipart/form-data 的Post请求封装成一个Part对象)
  27.         Part part = req.getPart("myfile");
  28.         //获取文件名
  29.         String fileName = part.getSubmittedFileName();
  30.         System.out.println("上传文件名 " + fileName);
  31.         //文件存放路径
  32.         String realPath = req.getServletContext().getRealPath("/");
  33.         System.out.println("文件存放路径:" + realPath);
  34.         //上传文件到指定目录
  35.         part.write(realPath + "/" + fileName);
  36.     }
  37. }
复制代码
文件下载

文件下载

文件下载,即将服务留上的资源下载(拷贝)到本地,我们可以通过两种方式下载。第一种是通过超链接本
身的特性来下载;第二种是通过代码下载,
超链接下载

当我们在HTML或SP页面中使用标签时,原意是希望能够进行跳转,但当超链接遇到浏览器不识别的资源
时会自动下载:当遇见刘览器能够直接显示的资源,浏览器就会默认显示出来,比如txt、pg、jPg等。当然我们
也可以通过download属性规定浏览器进行下载。但有些浏览器并不支持。
默认下载:
  1. <a target="_blank" href="https://www.cnblogs.com/test.zip">文本文件</a>
复制代码
指定download属性下载:
[code]<a target="_blank" href="https://www.cnblogs.com/test.txt download">文本文件
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表