axios post请求 Content-Type:application/octet-stream 下载文件乱码
`
download() {
let params = Object.assign({}, this.form);
let config = {
headers: {
"Content-Type": "application/octet-stream"
}
};
this.$axios
.post(`url`, params, config, {
responseType: 'blob',
})
.then(res => {
// 处理返回的文件流
const content = res;
const blob = new Blob([content]);
const fileName = "测试表格123.xls";
if ("download" in document.createElement("a")) {
// 非IE下载
const elink = document.createElement("a");
elink.download = fileName;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink);
} else {
// IE10+下载
navigator.msSaveBlob(blob, fileName);
}
});
},
`
出现乱码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解决了
原来是axios中 参数顺序的问题 踩坑!
看起来少侠这里对contentType可能理解错了,content只是告诉后端,请求发过去,我这个请求的主体是个什么格式,你按这个方式来读取,可能是json(默认),可能是formData。
至于返回值,你已经设置了responseType了,那么返回回来就已经是一个Blob了,为啥还要new Blob呢?