vue+axios请求实现下载功能
实验环境
版本为:
“vue”: “^2.6.14”,
“axios”: “^1.2.1”,
“element-ui”: “^2.4.5”,
具体代码
- UI界面,具体代码参考GitHub,若对您有帮助,还希望您点一个Star。
1
2
3
4
5<el-button
size="mini"
type="success" plain
@click="downloadFile(scope.$index, scope.row)">下载
</el-button> - js逻辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20downloadFile(index,row){
axios.get('/api/download',{
params: { // 请求参数拼接在url上
fileName: row.fileName
},responseType: "blob"
}).then(res=>{
const type = String(row.fileName.split('.').slice(-1));
let blob = new Blob([res.data], {
type: type //这里需要根据不同的文件格式写不同的参数,例如:.mp3、.mp4
});
let eLink = document.createElement("a");
eLink.download = row.fileName; //这里需要自己给下载的文件命名
eLink.style.display = "none";
eLink.href = URL.createObjectURL(blob);
document.body.appendChild(eLink);
eLink.click();
URL.revokeObjectURL(eLink.href);
document.body.removeChild(eLink);
})
}, - SpringBoot 后端接口,整合minio,具体代码参考GitHub,若对您有帮助,还希望您点一个Star。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24/**
* 下载文件 serverImpl层
*
* @param fileName 文件名
*/
public R download( HttpServletResponse response, String fileName) {
// get object given the bucket and object name
try (InputStream stream = minioClient.getObject(
GetObjectArgs.builder()
.bucket(bucket)
.object(fileName)
.build())) {
// Read data from stream
//浏览器指定下载类型
response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8"));
//下载文件
IOUtils.copy(stream, response.getOutputStream());
}catch (MinioException | InvalidKeyException | IOException | NoSuchAlgorithmException e){
log.error(e.getMessage());
return R.error().message("下载失败");
}
return R.success().message("下载成功");
}1
2
3
4
5/**
* 下载文件 server
* @param fileName 文件名
*/
R download(HttpServletResponse response, String fileName);1
2
3
4
5
6
7
8/**
* 下载文件 controller层
* @param fileName 文件名
*/
public R download(HttpServletResponse response,String fileName){
return R.success().map("data",fileService.download(response,fileName));
}
- 本文标题:vue+axios请求实现下载功能
- 本文作者:白也
- 创建时间:2022-12-25 23:01:13
- 本文链接:https://bm4578.github.io/2022/12/25/vue-axios实现下载功能/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论