.vue文件_vue.js下载文件

vue.js下载文件

有个同学不知道如何去下载文件,早上比较忙,弄了一份代码给他。晚上回来,发现不对。

现在整理一下,案例,下载一张图片

36429d172b08ddaa362f1e141a3cf9d9.png

基于axios

需要有axios

import axios from 'axios'

get请求:

  // get请求
requestGet(url, params = {}) {
return new Promise((resolve, reject) => {
axios.get(url, params).then(res => {
resolve(res.data)
}).catch(error => {
reject(error)
})
})
},

接口

export const getFile = (url, params) => {
return http.requestGet(url, params);
};

调用

 download() {
api.getFile("/images/vip_ad.png",
{
responseType: 'blob',
headers: {
'Content-Type': 'application/octet-stream'
},
}).then(result => {
console.log(result);
this.convertRes2Blob(result);
});
},

以二进制的形式保存成文件

 convertRes2Blob(response) {
// 将二进制流转为blob
let blob = new Blob([response]);
if (typeof window.navigator.msSaveBlob !== 'undefined') {
// 兼容IE,window.navigator.msSaveBlob:以本地方式保存文件
window.navigator.msSaveBlob(blob, decodeURI("文件名.png"))
} else {
console.log('save....');
// 创建新的URL并指向File对象或者Blob对象的地址
const blobURL = window.URL.createObjectURL(blob);
// 创建a标签,用于跳转至下载链接
const tempLink = document.createElement('a');
tempLink.style.display = 'none';
tempLink.href = blobURL;
tempLink.setAttribute('download', decodeURI("文件名.png"));
// 兼容:某些浏览器不支持HTML5的download属性
if (typeof tempLink.download === 'undefined') {
tempLink.setAttribute('target', '_blank')
}
// 挂载a标签
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
// 释放blob URL地址
window.URL.revokeObjectURL(blobURL);
}
},

测试

25168e82f297d6131ef831d1e67a9a1c.png

b312531396c41acc971a54d05584d83e.png

如果要下载Pdf的话,修改一下路径即可。

比如说:

   convertRes2Blob(response) {
// 将二进制流转为blob
let blob = new Blob([response]);
if (typeof window.navigator.msSaveBlob !== 'undefined') {
// 兼容IE,window.navigator.msSaveBlob:以本地方式保存文件
window.navigator.msSaveBlob(blob, decodeURI("文件名.pdf"))
} else {
console.log('save....');
// 创建新的URL并指向File对象或者Blob对象的地址
const blobURL = window.URL.createObjectURL(blob);
// 创建a标签,用于跳转至下载链接
const tempLink = document.createElement('a');
tempLink.style.display = 'none';
tempLink.href = blobURL;
tempLink.setAttribute('download', decodeURI("文件名.pdf"));
// 兼容:某些浏览器不支持HTML5的download属性
if (typeof tempLink.download === 'undefined') {
tempLink.setAttribute('target', '_blank')
}
// 挂载a标签
document.body.appendChild(tempLink);
tempLink.click();
document.body.removeChild(tempLink);
// 释放blob URL地址
window.URL.revokeObjectURL(blobURL);
}
},
download() {
api.getFile("/2020/07/13/数组的操作.pdf",
{
responseType: 'blob',
headers: {
'Content-Type': 'application/octet-stream'
},
}).then(result => {
console.log(result);
this.convertRes2Blob(result);
});
},

下载结果:

cd34e9af33d5957f3d5981a7c75b151b.png

d56493d4c7ff1e77470c3ebb4f3dd981.png

打开正常,到此,下载成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值