controller层代码
@RestController
@RequestMapping("/file")
public class FileController {
@GetMapping("/download/**")
public ResponseEntity<Object> downloadFile(HttpServletRequest request) throws IOException {
// 获得文件路径
String path = "C:\\temp" + request.getRequestURI().substring(14);
File file = new File(path);
// 文件不存在返回错误页面
if (!file.exists()) {
return ResponseEntity.notFound().build();
}
// 获取文件流
InputStreamResource resource = new InputStreamResource(new FileInputStream(file));
HttpHeaders headers = new HttpHeaders();
// 以附件形式下载
headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getName()));
// 文件流作为响应体
ResponseEntity<Object>
responseEntity = ResponseEntity.ok()
.headers(headers)
.contentLength(file.length())
.body(resource);
return responseEntity;
}
}
要下载的文件保存在C:\\temp中
在浏览器中输入http://localhost:端口号/file/download/文件路径,就能下载文件啦!