21xrx.com
2025-04-21 23:04:17 Monday
文章检索 我的文章 写文章
Java实现文件上传的三种方式
2023-06-12 05:09:13 深夜i     5     0
Java 文件上传 Servlet

在 Web 开发中,文件上传功能是非常常见的一个需求,本文将介绍三种基于 Java 实现的文件上传方式。

1. Servlet API 实现文件上传

通过 Servlet API,可以使用 HttpServletRequest 接口中的 getParameter() 和 getPart() 方法来实现文件上传功能,具体实现方法请参考以下代码示例:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // 设置字符编码及表单类型
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");
  // 获取上传文件
  Part filePart = request.getPart("file");
  // 文件信息
  String fileName = filePart.getSubmittedFileName();
  long fileSize = filePart.getSize();
  // 输出文件信息
  response.getWriter().write("上传成功!文件名:" + fileName + ",文件大小:" + fileSize);
}

2. Apache Commons FileUpload 实现文件上传

Apache Commons FileUpload 是一个常用的文件上传工具类库,具有易用性和高扩展性,使用该工具类可以实现文件上传功能的处理。具体实现方法请参考以下代码示例:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // 设置字符编码及表单类型
  request.setCharacterEncoding("UTF-8");
  response.setContentType("text/html;charset=UTF-8");
  // 创建 FileItemFactory 实例
  FileItemFactory factory = new DiskFileItemFactory();
  // 创建 ServletFileUpload 实例
  ServletFileUpload upload = new ServletFileUpload(factory);
  // 文件信息
  String fileName = null;
  long fileSize = 0L;
  try {
    // 解析请求表单中的所有文件
    List
  items = upload.parseRequest(request);
 
    // 迭代解析文件
    for (FileItem item : items) {
      if (!item.isFormField()) {
        fileName = item.getName();
        fileSize = item.getSize();
        // 输出文件信息
        response.getWriter().write("上传成功!文件名:" + fileName + ",文件大小:" + fileSize);
      }
    }
  } catch (FileUploadException e) {
    e.printStackTrace();
  }
}

3. Spring MVC 实现文件上传

通过 Spring MVC 可以实现文件上传功能的处理。只需要在控制器中添加 MultipartFile 参数,并在方法中使用 transferTo() 方法保存上传文件。具体实现方法请参考以下代码示例:

@PostMapping("/upload")
public ResponseEntity
  upload(@RequestParam("file") MultipartFile file) throws IOException {
 
  String fileName = file.getOriginalFilename();
  long fileSize = file.getSize();
  // 保存上传文件
  file.transferTo(new File("path/to/upload/" + fileName));
  return ResponseEntity.ok().body("上传成功!文件名:" + fileName + ",文件大小:" + fileSize);
}

API、Apache Commons FileUpload、Spring MVC

  
  

评论区