JavaScript實現(xiàn)文件下載并重命名代碼實例
更新時間:2019年12月12日 10:36:27 作者:吾知的善良
這篇文章主要介紹了JavaScript實現(xiàn)文件下載并重命名代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
這篇文章主要介紹了JavaScript實現(xiàn)文件下載并重命名代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
第一種是HTML官網(wǎng)中的方法
<a href="/images/liang.jpg" rel="external nofollow" 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);
});
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
BootStrap智能表單實戰(zhàn)系列(七)驗證的支持
這篇文章主要介紹了BootStrap智能表單實戰(zhàn)系列(七)驗證的支持 ,凡是涉及到用戶編輯信息然后保存的頁面,都涉及到一個數(shù)據(jù)是否符合要求的檢查,需要客服端和服務器端的校驗的問題,本文介紹非常詳細,具有參考價值,需要的朋友可以參考下2016-06-06
javascript中使用class和prototype的區(qū)別小結
本文將介紹在JavaScript何時使用class以及何時使用prototype,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08

