springmvc 用 response下载文件的例子
时间: 2024-02-01 09:13:26 浏览: 68
springMVC 上传下载例子
5星 · 资源好评率100%
以下是使用 Spring MVC 下载文件的示例代码:
```java
@RequestMapping(value = "/download")
public void downloadFile(HttpServletResponse response) throws IOException {
// 获取文件路径
String filePath = "path/to/file";
File file = new File(filePath);
// 设置响应头
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + file.getName());
response.setHeader("Content-Length", String.valueOf(file.length()));
// 读取文件并写入响应流
try (InputStream inputStream = new BufferedInputStream(new FileInputStream(file))) {
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) > 0) {
response.getOutputStream().write(buffer, 0, len);
}
response.flushBuffer();
}
}
```
在上面的代码中,`@RequestMapping` 注解用于指定该方法对应的 URL 地址。在本例中,我们将其指定为 `/download`。当用户访问 `/download` 时,该方法会被调用。
接下来,我们获取要下载的文件路径,并使用 `File` 类创建一个 `File` 对象。
然后,我们设置响应头,包括文件类型、文件名和文件大小。
最后,我们使用 `FileInputStream` 读取文件,并将文件内容写入响应流。需要注意的是,在写入文件内容之后,我们需要调用 `response.flushBuffer()` 方法来刷新响应流。这样做可以确保所有数据都被写入响应流中。
值得一提的是,上述代码中使用了 try-with-resources 语句,这样可以确保 `InputStream` 在使用完毕后被正确关闭。
阅读全文