springboot 下载文件 显示文件大小
时间: 2023-10-25 17:23:32 浏览: 264
如果你想在 Spring Boot 中下载一个文件并且显示这个文件的大小,可以按照以下步骤进行操作:
1. 首先,你需要创建一个 Controller 来处理文件下载请求。在这个 Controller 中,你需要注入一个 ResourceLoader 对象,这个对象可以用来加载文件资源。同时,你也需要注入一个 HttpServletResponse 对象,这个对象可以用来设置响应头信息,包括文件名和文件大小。
```
@Controller
public class FileDownloadController {
@Autowired
private ResourceLoader resourceLoader;
@GetMapping("/download")
public void downloadFile(HttpServletResponse response) throws IOException {
Resource fileResource = resourceLoader.getResource("classpath:static/sample.pdf");
File file = fileResource.getFile();
String fileName = file.getName();
Long fileSize = file.length();
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
response.setHeader("Content-Length", String.valueOf(fileSize));
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
FileCopyUtils.copy(inputStream, response.getOutputStream());
}
}
```
2. 在这个 Controller 中,你可以使用 ResourceLoader 对象来获取文件资源,并且使用 getFile() 方法来获取文件对象。然后,你可以使用 File 对象的 getName() 方法来获取文件名,使用 length() 方法来获取文件大小。
3. 接下来,你需要设置响应头信息,包括文件名和文件大小。你可以使用 setHeader() 方法来设置响应头信息。其中,Content-Disposition 头信息用来指定文件名,Content-Length 头信息用来指定文件大小。
4. 最后,你需要将文件内容写入到响应输出流中,以便客户端可以下载这个文件。你可以使用 BufferedInputStream 和 FileCopyUtils.copy() 方法来实现这个功能。
注意:这里的示例代码仅供参考,具体实现可能需要根据你的实际需求进行调整。
阅读全文