java实现文件下载接口
时间: 2023-08-28 08:05:20 浏览: 94
以下是一个简单的Java实现文件下载接口的示例代码:
```java
@GetMapping("/download")
public ResponseEntity<Resource> downloadFile(@RequestParam("file_name") String fileName) throws IOException {
// 读取文件为文件流
File file = new File("file_path/" + fileName);
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getName()));
// 返回响应实体
return ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.contentType(MediaType.parseMediaType("application/octet-stream"))
.body(resource);
}
```
在上面的代码中,我们通过 `@GetMapping` 注解定义了一个 GET 方法的请求处理器,同时使用 `@RequestParam` 注解来获取前端传递过来的文件名参数,然后将文件读取为文件流,并设置响应头以便浏览器下载文件。最后,通过 `ResponseEntity` 类来构造响应实体并返回给前端。
注意,这里我们使用了 `InputStreamResource` 类来封装文件流。这是因为在 Spring MVC 中,`ResponseEntity` 只能包含一个对象,而不能同时包含文件流和其他响应信息。因此,我们需要将文件流封装在一个 `Resource` 对象中,然后将其作为响应实体的 `body` 属性返回给前端。
阅读全文