springboot 文件下载
时间: 2023-10-17 12:27:37 浏览: 42
在Spring Boot中实现文件下载功能可以通过以下步骤完成:
1. 首先,创建一个Controller类来处理文件下载请求。在该类中,使用`@GetMapping`注解将一个URL映射到一个处理方法上。方法的参数中需要包含`HttpServletResponse`对象,用于向客户端发送响应。例如:
```java
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
@Controller
public class FileDownloadController {
@GetMapping("/download/{filename}")
public void downloadFile(@PathVariable String filename, HttpServletResponse response) throws IOException {
// 获取文件路径
String filePath = "/path/to/files/" + filename;
// 设置响应内容类型
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
// 设置响应头
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
// 读取文件
File file = new File(filePath);
FileInputStream fileInputStream = new FileInputStream(file);
// 获取输出流
OutputStream outputStream = response.getOutputStream();
// 将文件内容写入输出流
byte[] buffer = new byte[1024];
int len;
while ((len = fileInputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
// 关闭流
fileInputStream.close();
outputStream.close();
}
}
```
2. 在上述代码中,`downloadFile`方法处理文件下载请求。它接受一个`filename`参数作为要下载的文件名,并将文件的内容写入`HttpServletResponse`的输出流中。同时,设置响应的内容类型为`application/octet-stream`,表示二进制文件,以及设置响应头`Content-Disposition`,指示浏览器下载该文件。
3. 将`filePath`变量设置为实际文件的路径。在上述示例代码中,我们假设文件存储在`/path/to/files/`目录下。
4. 当客户端请求`/download/{filename}`时,将会调用`downloadFile`方法,并将相应的文件发送给客户端进行下载。
请根据实际需求修改代码中的文件路径和URL映射。确保指定的路径下存在要下载的文件。