vue调用springboot项目实现文件下载
时间: 2023-10-20 17:15:55 浏览: 96
Vue调用SpringBoot后台实现文件下载功能
要实现Vue调用Spring Boot项目实现文件下载,可以按照以下步骤进行:
1. 在Spring Boot项目中编写Controller方法,实现文件下载功能。例如:
```java
@GetMapping("/downloadFile")
public ResponseEntity<Resource> downloadFile() {
Resource resource = new FileSystemResource("/path/to/file");
HttpHeaders headers = new HttpHeaders();
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=file.txt");
return ResponseEntity.ok()
.headers(headers)
.contentLength(resource.contentLength())
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(resource);
}
```
在此方法中,`/path/to/file` 是要下载的文件的路径,`file.txt` 是要下载的文件名。
2. 在Vue中编写调用该接口的代码。例如:
```javascript
downloadFile() {
axios({
url: '/downloadFile',
method: 'GET',
responseType: 'blob'
}).then(response => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.txt');
document.body.appendChild(link);
link.click();
});
}
```
在此代码中,`axios` 是一个用于发送 HTTP 请求的 JavaScript 库。通过调用 `/downloadFile` 接口,获取文件数据并创建一个 Blob 对象,然后将其转换为 URL 并创建一个 `<a>` 标签,设置 `download` 属性为要下载的文件名,最后触发点击事件即可下载文件。
注意:需要在 Vue 的 `mounted` 钩子函数中引入 axios 库。
阅读全文