21xrx.com
2025-03-14 11:24:24 Friday
文章检索 我的文章 写文章
【教程】Java图片上传的实现方法及代码案例
2023-06-15 16:58:28 深夜i     13     0
Java 图片上传 实现方法

在Web开发中,图片上传是一个常见的需求,Java作为一种强大的后端编程语言,它提供了多种图片上传的实现方式。下面,我们将通过简单的代码实例,介绍Java图片上传的实现方法。

1.通过form表单实现图片上传

首先,我们需要在前端代码中添加一个form表单,用于上传图片。如下所示:

接着,我们需要在后端代码中处理这个上传请求。如下所示:

@RequestMapping("upload")
@ResponseBody
public String upload(MultipartHttpServletRequest request) throws Exception {
  MultipartFile file = request.getFile("file");
  String fileName = file.getOriginalFilename();
  String filePath = "/data/upload/" + fileName;
  File dest = new File(filePath);
  file.transferTo(dest);
  return "上传成功";
}

在这段代码中,我们通过@RequestMapping注解来处理URL为“/upload”的POST请求。并通过MultipartHttpServletRequest类的getFile方法,获取上传的文件;将文件保存到指定的文件路径中。

2.通过Spring文件上传实现图片上传

除了使用form表单上传文件以外,我们还可以使用Spring框架提供的文件上传方式。首先,我们需要在Spring的配置文件中添加如下配置:

然后,在Controller中添加如下代码:

@Autowired
private HttpServletRequest request;
@RequestMapping(value = "/uploadImg", method = RequestMethod.POST)
@ResponseBody
public String uploadImg(MultipartFile file) throws IOException {
  String fileName = request.getSession().getServletContext().getRealPath("/") + "upload/" + file.getOriginalFilename();
  File dest = new File(fileName);
  if (!dest.getParentFile().exists()) {
    dest.getParentFile().mkdir();
  }
  // 保存文件
  file.transferTo(dest);
  return "上传成功";
}

在这段代码中,我们先通过Autowired注解将HttpServletRequest注入,再通过获取ServletContext的绝对路径来获取文件保存的路径。

3.使用Apache Commons FileUpload实现图片上传

Apache Commons FileUpload是一个开源的文件上传类库,可以在多种应用服务器中实现高性能文件上传功能。下面是一个基于Servlet 3.0 API的示例代码:

public class MyServlet extends HttpServlet {
  @Override
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    // 设置缓冲区大小,超过这个大小的文件将被保存到临时文件中
    factory.setSizeThreshold(4096);
    // 设置临时文件的存储位置
    factory.setRepository(new File("/data/tmp"));
    ServletFileUpload upload = new ServletFileUpload(factory);
    // 设置上传文件的大小限制
    upload.setSizeMax(10240000);
    try {
      List
  items = upload.parseRequest(request);
 
      Iterator
  iter = items.iterator();
 
      while (iter.hasNext()) {
        FileItem item = iter.next();
        // 判断这个part是否是文件
        if (!item.isFormField()) {
          String fileName = item.getName();
          String filePath = "/data/upload/" + fileName;
          File dest = new File(filePath);
          item.write(dest);
        }
      }
      response.getWriter().println("");
      response.getWriter().println("");
      response.getWriter().println("
文件上传成功"); 
      response.getWriter().println("");
      response.getWriter().println("");
    } catch (Exception e) {
      e.printStackTrace();
      response.getWriter().println("");
      response.getWriter().println("");
      response.getWriter().println("
文件上传失败"); 
      response.getWriter().println("");
      response.getWriter().println("");
    }
  }
}

在这段代码中,我们从request中获取文件列表,遍历列表,判断是否是文件,如果是,则将文件保存到指定路径。

  
  

评论区