vue⼆进制⽂件的下载(解决乱码和解压报错)
spring festival翻译中文
问题描述:项⽬中使⽤的是vue框架进⾏开发,因为⽂件下载存在权限问题,所以并不能通过 a 链接的 href 属性直接赋值 URL进⾏下载,
(如果你的⽂件没有下载权限,可以直接通过href属性赋值URL的⽅法进⾏⽂件下载),所以使⽤vue-resource请求⽂件流后,借助Blob对象实现下载,
但是仍然存在解压的问题(针对压缩⽂件),⽽ docx等⽂档格式主要出现的就是乱码问题。
问题截图:
出现以上解压问题的代码,通过vue-resource请求⼆进制⽂件
pycharm使用教程 linux
downloadFile(attachment) {
let fileName = attachment.displayName;
this.$(strategyDownloadUrl + '/' + attachment.id).then((res) => {
if(typeof(res.data) == 'string'){
var blob = new Blob([res.data], {type:'application/octet-stream'})
if (window.navigator.msSaveOrOpenBlob) {//msSaveOrOpenBlob⽅法返回bool值
navigator.msSaveBlob(blob, fileName);//本地保存
} else {
var link = ateElement('a');//a标签下载
link.href = ateObjectURL(blob);
link.download = fileName;
link.click();
vokeObjectURL(link.href);
网站即将上线html5模板}
}else{
swal(res.data.msg,'','info')//个⼈弹窗忽视
}
})
},
cytoplasmic采⽤原⽣对象XHRHttpRequest进⾏⽂件请求(也可通过jquery的ajax进⾏⽂件请求),可以正常解压⽂
downloadFile(attachment) {
let that = this
var ajax = new XMLHttpRequest()
ajax.open("GET",strategyDownloadUrl + '/' + attachment.id,true)
ajax.setRequestHeader('X-Authorization','Bearer ' + this.$ken)
adyState == 4) {
if(this.status == 200) {
//console.sponse) // should be a blob
pe == "application/octet-stream"){
that.sponse,attachment.displayName)
}else{
swal('您要下载的资源已被删除!','' , 'error')
}
} else sponseText != "") {
//console.sponseText);
}
} else adyState == 2) {
if(this.status == 200) {
} else {
}
}
};
ajax.send(null);
},
downloadHandler(content, filename) {
var eleLink = ateElement('a')
eleLink.download = filename
mariadb下载教程eleLink.style.display = 'none'
// 字符内容转变成blob地址
var blob = new Blob([content],{type: "application/octet-stream"})
eleLink.href = ateObjectURL(blob)
// 触发点击
document.body.appendChild(eleLink)
eleLink.click()
// 然后移除
veChild(eleLink)
},
如有不正确的地⽅,请指正交流,共同进步。
jquery下载文件请求

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。