vue blob流下载,文件名从后端获取,并解决文件名乱码
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
vue blob流下载,文件名从后端获取,并解决文件名乱码
bolb下载文件,文件名从content-disposition获取,并解决乱码
写在公共方法里的下载
// fileDownload.js
export default {
install(Vue) {
Vue.prototype.FileDownload = function (data) {
let text = data.text || '正在请求导出,请耐心等待...';
let type = data.fileType || 'xlsx';
let loading = this.$loading({
lock: true,
text: text,
spinner: 'loading_spinner',
background: 'rgba(0, 0, 0, 0.7)'
});
let config = {
method: data.method,
url: data.url,
headers: {'uid': sessionStorage.getItem('uid')},
responseType: 'blob'
}
if (data.method === 'post') {
config.data = data.param
} else if (data.method === 'get') {
config.params = data.param
}
this.$http(config).then((res) => {
loading.close();
if (res) {
// 从content-disposition拿到后端返回的filename,并用decodeURI解码,防止乱码
let fileName = decodeURI((res.headers['content-disposition'].split("="))[1])
// 判断浏览器是否支持a标签的download属性
if ('download' in document.createElement('a')) {
// 非IE下载
let url = window.URL.createObjectURL(res.data); //将数据生成一个路径
let link = document.createElement('a');
link.style.display = 'none'; //设置a标签隐藏
link.href = url;
link.setAttribute('download', fileName);
document.body.appendChild(link);
link.click();
window.URL.revokeObjectURL(elink.href) // 释放URL 对象
document.body.removeChild(link);
} else { // IE10+下载
navigator.msSaveBlob(res.data, fileName);
}
}
}).catch(err => {
loading.close();
this.$message.error(res.message);
});
}
}
}
使用
// download.html
download() {
let params = {
methods: 'post', // post或者get方法
url: 'URL', // URL下载文件url
param: { // 下载需传的参数
id: id
},
text: '正在请求下载***,请耐心等待...' // 下载loading文字
};
this.FileDownload(params); // 调用下载公共方法
}
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献6条内容
所有评论(0)