Spring boot文件下载
时间: 2024-01-13 17:11:15 浏览: 73
你可以使用Spring Boot来实现文件下载。首先,你需要设置一个Controller来处理文件下载的请求。在该Controller中,你可以使用`ResponseEntity`类来将文件作为响应返回给客户端。
下面是一个简单的示例代码,演示如何在Spring Boot中实现文件下载:
```java
import org.springframework.core.io.Resource;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@Controller
public class FileDownloadController {
@GetMapping("/download/{fileName}")
public ResponseEntity<Resource> downloadFile(@PathVariable String fileName) throws IOException {
// 获取文件路径
String filePath = "/path/to/your/file/" + fileName;
Path path = Paths.get(filePath);
Resource resource = new FileSystemResource(path);
// 设置下载响应头
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_VALUE);
return ResponseEntity.ok()
.headers(headers)
.body(resource);
}
}
```
在上述代码中,我们使用`@GetMapping`注解来映射`/download/{fileName}`路径的GET请求。`{fileName}`是一个路径变量,用于指定要下载的文件名。
`downloadFile`方法中,我们首先根据文件名构建文件路径,然后使用`FileSystemResource`将文件加载为Spring的`Resource`对象。接下来,我们设置响应头,包括`Content-Disposition`来指定文件名,并设置`Content-Type`为`application/octet-stream`。
最后,我们使用`ResponseEntity.ok()`来构建响应实体,将文件资源作为响应体返回给客户端。
请将`/path/to/your/file/`替换为你实际的文件路径,然后可以使用类似`http://localhost:8080/download/myfile.txt`的URL来下载名为`myfile.txt`的文件。
希望这个示例能够帮助到你!如有疑问,请随时提问。
阅读全文