文件下载 发表于 2020-01-06 业务中常遇到前端下载文件的需求,简单汇总。 返回Blob下载表格123456789101112131415161718this.$http.get('***', { responseType: 'blob'}).then(data){ let blob = new Blob([data], { type: 'application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob) } else { let elink = document.createElement('a') elink.download = `${fileName}.xls` elink.style.display = 'none' elink.href = URL.createObjectURL(blob) document.body.appendChild(elink) elink.click() document.body.removeChild(elink) }} 返回Blob下载pdf12345678910111213141516...let blob = new Blob([data], { type: 'application/pdf;charset=UTF-8' }); if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob); } else { let elink = document.createElement('a'); elink.download = `${fileName}.pdf`; elink.style.display = 'none'; elink.href = URL.createObjectURL(blob); document.body.appendChild(elink); elink.click(); document.body.removeChild(elink); }}) 返回url下载12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849..._URL...// location.hreflocation.href = _URL;// window.openwindow.open(_URL);// iframelet iframe = document.createElement('iframe');iframe.style.display = 'none'; // 防止影响页面iframe.style.height = 0; // 防止影响页面iframe.src = _URL;document.body.appendChild(iframe);setTimeout(() => {iframe.remove();}, 60 * 1000);// bloblet Req = new XMLHttpRequest();Req.open('GET', _URL, true);Req.responseType = 'blob';Req.onload = () => { var blob = new Blob([Req.response], { type: 'application/pdf' }); let type = blob.type; let forceSaveableType = 'application/octet-stream'; if (type && type !== forceSaveableType) { // 强制下载,而非在浏览器中打开 let slice = blob.slice || blob.webkitSlice || blob.mozSlice; blob = slice.call(blob, 0, blob.size, forceSaveableType); } let url = URL.createObjectURL(blob); let saveLink = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'a' ); saveLink.href = url; saveLink.download = '文件.pdf'; let event = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); saveLink.dispatchEvent(event); URL.revokeObjectURL(url);};Req.send(); 第三方具体见文档https://github.com/rndme/download。 1download('文件.pdf') ------本文结束 感谢阅读------ 本文作者: luckyp 本文链接: https://luckyp.top/文件下载/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!