返回

SpringMVC文件上传下载-Java 入门教程详解

后端







## 九、文件上传和下载

在SpringMVC中,文件上传和下载是两个非常重要的功能。文件上传可以将文件从客户端上传到服务器,而文件下载可以将文件从服务器下载到客户端。

### 1、文件下载

#### 使用 ResponseEntity 实现下载文件的功能

SpringMVC中,可以使用ResponseEntity来实现文件下载的功能。ResponseEntity是一个泛型类,它可以用来表示HTTP响应。我们可以通过ResponseEntity来设置HTTP响应的状态码、响应头、响应体等信息。

```java
@RequestMapping(value = "/download")
public ResponseEntity<byte[]> download() throws IOException {
    // 获取要下载的文件路径
    String filePath = "/Users/test/Downloads/test.txt";
    // 创建ResponseEntity对象
    ResponseEntity<byte[]> responseEntity = ResponseEntity.ok()
            .header("Content-Disposition", "attachment; filename=" + URLEncoder.encode("test.txt", "UTF-8"))
            .body(Files.readAllBytes(Paths.get(filePath)));
    // 返回ResponseEntity对象
    return responseEntity;
}

上面的代码中,我们首先获取要下载的文件路径,然后创建ResponseEntity对象。在创建ResponseEntity对象时,我们可以设置HTTP响应的状态码、响应头、响应体等信息。最后,我们返回ResponseEntity对象。

2、文件上传

SpringMVC的文件上传功能非常强大,它支持多种文件上传方式,并且可以对文件上传进行限制。

@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file) {
    // 获取上传的文件
    String fileName = file.getOriginalFilename();
    // 保存上传的文件
    file.transferTo(new File("/Users/test/Downloads/" + fileName));
    // 返回上传文件的路径
    return "/success";
}

上面的代码中,我们首先获取上传的文件。然后,我们将上传的文件保存到指定的位置。最后,我们返回上传文件的路径。

SpringMVC的文件上传功能非常强大,它支持多种文件上传方式,并且可以对文件上传进行限制。这使得SpringMVC非常适合开发文件上传下载功能的应用程序。