springboot 下载文件 使用原文件名
时间: 2023-12-20 15:31:57 浏览: 133
在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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@RestController
@RequestMapping("/download")
public class FileDownloadController {
@GetMapping("/{filename}")
public ResponseEntity<Resource> downloadFile(@PathVariable String filename) throws IOException {
// 获取文件路径
String filePath = "/path/to/files/" + filename;
Path file = Paths.get(filePath);
// 检查文件是否存在
if (!Files.exists(file)) {
return ResponseEntity.notFound().build();
}
// 设置响应头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", filename);
// 创建文件资源
Resource resource = new InputStreamResource(Files.newInputStream(file));
// 返回响应实体
return ResponseEntity.ok()
.headers(headers)
.body(resource);
}
}
```
在上述代码中,`/download/{filename}`接口用于下载指定文件名的文件。首先,根据文件路径和文件名构建`Path`对象。然后,检查文件是否存在,如果文件不存在,则返回404错误。接下来,设置响应头,将文件以附件形式下载,并指定原文件名。最后,创建文件资源并返回响应实体。
请注意,上述代码中的文件路径`/path/to/files/`需要根据实际情况进行修改,以指定文件所在的文件夹路径。
阅读全文