21xrx.com
2024-11-22 09:35:03 Friday
登录
文章检索 我的文章 写文章
学习Java上传文件的几种方式
2023-06-11 13:14:04 深夜i     --     --
Java 上传文件 框架

我在学习Java过程中,遇到了需要上传文件的场景。于是我就开始了解Java上传文件的几种方式。

第一种方式是使用Servlet API的Part接口。这种方式适用于使用Servlet或JSP来处理文件上传的情况。具体实现如下:


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  String savePath = "D:/upload"; // 保存上传文件的目录

  File file = new File(savePath);

  if(!file.exists()&&!file.isDirectory()){

    System.out.println("目录不存在,需要创建");

    file.mkdir();

  }

  //从请求头中获取文件类型

  String contentType = request.getContentType();

  if (contentType != null && contentType.toLowerCase().startsWith("multipart/")) {

    Part filePart = request.getPart("file"); //获取上传文件的Part对象

    String fileName = filePart.getSubmittedFileName(); //获取上传文件的文件名

    filePart.write(savePath + "/" + fileName); //保存上传文件到指定目录

  }

}

第二种方式是使用第三方库commons-fileupload。这种方式相对于第一种方式,有更好的可定制性。具体实现如下:


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  String savePath = "D:/upload"; // 保存上传文件的目录

  DiskFileItemFactory factory = new DiskFileItemFactory();

  ServletFileUpload upload = new ServletFileUpload(factory);

  try {

    List items = upload.parseRequest(request);

    Iterator iter = items.iterator();

    while (iter.hasNext()) {

      FileItem item = (FileItem) iter.next();

      if (!item.isFormField()) {

        String fileName = item.getName();

        File uploadedFile = new File(savePath + "/" + fileName);

        item.write(uploadedFile);

      }

    }

  } catch (Exception e) {

    e.printStackTrace();

  }

}

第三种方式是使用Spring MVC框架的MultipartFile接口。这种方式相对于前两种方式,使用起来更加方便。具体实现如下:


@RequestMapping("/upload")

public String upload(@RequestParam("file") MultipartFile file) throws IOException {

  String savePath = "D:/upload"; // 保存上传文件的目录

  String fileName = file.getOriginalFilename();

  File savedFile = new File(savePath, fileName);

  file.transferTo(savedFile);

  return "success";

}

以上是Java上传文件的几种方式,我觉得第三种方式最为方便。接下来我会继续学习和实践Java的其他功能。

  
  

评论区

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