1、需求分析
下载列表中展示的zip压缩文件,需要实现用户点击下载去实现压缩包的下载。
2、后台接口分析
后台的接口是通过get请求,query传参,然后去下载二进制文件,一般的话前端是直接通过a标签去实现文件的下载,但是这种方式也是可以学习的,今天便试了下,也算是个学习的过程。
3、代码实现
3.1、接口部分
- 引入axios
import axios from "axios";
- URL的参数拼接
当点击某一项时,通过@click="handleDown(item)"
将这一项的具体信息作为方法的参数传入
然后在item
中拿到当前压缩包的url,将这个参数传给后台
- URL的参数拼接
let url = `/api/tdm/common/storage/readFile/?fileUrl=${row.fileId}`,
3.2、调接口开始下载
row.taskName
为下载的压缩包的名字
axios({
method: "get",
url: url,
responseType: "blob",
})
.then((res) => {
let data = res.data;
let url = window.URL.createObjectURL(new Blob([data]));
let link = document.createElement("a");
link.style.display = "none";
link.href = url;
link.setAttribute("download", row.taskName);
document.body.appendChild(link);
link.click();
})
.catch((error) => {
console.error(error);
});
压缩包便成功下载了