返回

Spring MVC 文件上传与下载

后端

Spring MVC 是一个基于 Java 的 Web 框架,它提供了简单便捷的方式来处理文件上传和下载。本文将介绍如何在 Spring MVC 中使用注解来实现文件上传和下载。

文件下载

在 Spring MVC 中,文件下载可以通过 @RequestMapping 注解来实现。我们只需要在控制器中定义一个方法,并使用 @RequestMapping 注解来指定该方法的请求路径。在方法体中,我们可以使用 ResponseEntity 来生成一个包含文件的响应。

@RequestMapping(value = "/download")
public ResponseEntity<byte[]> download() {
    // 获取要下载的文件
    byte[] file = ...;

    // 设置响应头
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    headers.setContentDisposition(ContentDisposition.attachment().filename("file.txt").build());

    // 生成响应实体
    ResponseEntity<byte[]> responseEntity = new ResponseEntity<>(file, headers, HttpStatus.OK);

    return responseEntity;
}

上面的代码中,我们首先获取要下载的文件。然后,我们设置响应头。Content-Type 头指定了文件的 MIME 类型,Content-Disposition 头指定了文件的名称和附件类型。最后,我们生成一个包含文件的响应实体。

文件上传

在 Spring MVC 中,文件上传可以通过 @PostMapping 注解来实现。我们只需要在控制器中定义一个方法,并使用 @PostMapping 注解来指定该方法的请求路径。在方法体中,我们可以使用 MultipartHttpServletRequest 来获取上传的文件。

@PostMapping(value = "/upload")
public String upload(MultipartHttpServletRequest request) {
    // 获取上传的文件
    MultipartFile file = request.getFile("file");

    // 保存文件
    ...

    // 返回结果
    return "redirect:/";
}

上面的代码中,我们首先获取上传的文件。然后,我们保存文件。最后,我们返回结果。

总结

Spring MVC 提供了简单便捷的方式来处理文件上传和下载。我们可以使用 @RequestMapping 注解来实现文件下载,也可以使用 @PostMapping 注解来实现文件上传。