VUE post请求下载文件
VUE,POST方法提交form表单 下载文件download(){//准备数据var obj = {...};var s = noticeEncrypt(JSON.stringify(obj));var files = new FormData();let config = {headers: {"Content-Type": "multipart/form-da.
·
VUE,POST方法提交form表单 下载文件
download(){
//准备数据
var obj = {
...
};
var s = noticeEncrypt(JSON.stringify(obj));
var files = new FormData();
let config = {
headers: {
"Content-Type": "multipart/form-data",
},
};
files.append("s", s);
axios({
method: "post",
url: "...", // 请求地址
data: files, // 参数
header: config,
responseType: "blob", // 表明返回服务器返回的数据类型
}).then((res) => {
console.log(res)
if (window.navigator.msSaveBlob) {
//IE以及IE内核的浏览器
try {
window.navigator.msSaveBlob(res.data, file.name); //response为接口返回数据,这里请求的时候已经处理了,如果没处理需要在此之前自行处理var data = new Blob([response.data]) 注意这里需要是数组形式的,fileNm就是下载之后的文件名
// window.navigator.msSaveOrOpenBlob(response, fileNm); //此方法类似上面的方法,区别可自行百度
} catch (e) {}
} else {
//在headers中截取filename
var filename = res.headers//下载后文件名
filename = filename["content-disposition"]
filename = filename.split(";")[1].split("filename=")[1];
var blob = new Blob([res.data])
var downloadElement = document.createElement('a');
var href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
downloadElement.download = filename
//此处也可以将filename写死 "filename.xlsx"
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
}
});
},
更多推荐
已为社区贡献4条内容
所有评论(0)