21xrx.com
2024-12-23 00:35:48 Monday
登录
文章检索 我的文章 写文章
【教程】Java图片上传的实现方法及代码案例
2023-06-15 16:58:28 深夜i     --     --
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中获取文件列表,遍历列表,判断是否是文件,如果是,则将文件保存到指定路径。

  
  

评论区

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