JavaScript 實現文件下載並重命名


第一種是HTML官網中的方法
<a href="/images/liang.jpg" download="文件名稱">
HTML5 中 a 標簽提供了一個 filename 屬性,可以下載成指定的 download 屬性名稱
這種同源訪問是沒有問題的,但一跨域就不行了,試了其它方法,不是報跨域錯誤,就是在當前頁面打開文件,體驗相當不好。

第二種方案比較通用
/** * 獲取 blob * url 目標文件地址 */ function getBlob(url) { return new Promise(resolve => { const xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'blob'; xhr.onload = () => { if (xhr.status === 200) { resolve(xhr.response); } }; xhr.send(); }); } /** * 保存 blob * filename 想要保存的文件名稱 */ function saveAs(blob, filename) { if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob, filename); } else { const link = document.createElement('a'); const body = document.querySelector('body');     link.href = window.URL.createObjectURL(blob); link.download = filename; // fix Firefox link.style.display = 'none'; body.appendChild(link); link.click(); body.removeChild(link); window.URL.revokeObjectURL(link.href); } } /** * 下載 * @param {String} url 目標文件地址 * @param {String} filename 想要保存的文件名稱 */ function download(url, filename) { getBlob(url).then(blob => { saveAs(blob, filename); }); }
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM