21xrx.com
2024-12-22 23:42:23 Sunday
登录
文章检索 我的文章 写文章
Java实现文件上传的三种方式
2023-06-12 05:09:13 深夜i     --     --
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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复