用vue作為前端、node.js作為后端開(kāi)發(fā)一個(gè)網(wǎng)站,有一個(gè)需求是在前端進(jìn)行文件下載,文件類型包括pdf、word、exe等,文件的儲(chǔ)存位置在后端的路徑中。后端代碼:res.download(file_path)前端代碼:axios.get(url,{responseType:'blob'}).then(function(res){ if (res.data){
filename = 'filename'; var blob = new Blob([res.data],{type:""}); console.log('sizzze',res.data.length,blob.size);
if (window.navigator.msSaveOrOpenBlob){
navigator.msSaveOrBlob(blob, filename);
}else{ var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename; document.body.appendChild(link); var evt = document.createEvent("MouseEvents");
evt.initEvent("click", false, false);
link.dispatchEvent(evt);
document.body.removeChild(link);
}
})但是這樣下載下來(lái)的文件和原始文件的大小是不同的,而且總是比原文件大一些。console.log('sizzze',res.data.length,blob.size)用這句話觀察了一下后端傳回的數(shù)據(jù)大小和生成的blob的數(shù)據(jù)大小,已經(jīng)不同了。才疏學(xué)淺,實(shí)在不懂,請(qǐng)大神們幫忙解答一下,多謝了!
1 回答

夢(mèng)里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
responseType寫了blob回來(lái)的res.data不是就已經(jīng)是blob了么。。再new一個(gè)type丟了?
添加回答
舉報(bào)
0/150
提交
取消