封裝一個js下載文件的工具

import moment from 'moment'; const ajax = (url, options = {}) => { window.URL = window.URL || window.webkitURL; return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); xhr.open('get', url, true); if (options.responseType) xhr.responseType = options.responseType; xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { resolve(xhr); } else { reject(xhr); } } }; xhr.send(); }); }; function downloadFile(content, filename) { let a = document.createElement('a'); const blob = new Blob([content]); const url = window.URL.createObjectURL(blob); a.href = url; a.download = filename; a.click(); window.URL.revokeObjectURL(url); } const download = async (url, name) => { const result = await ajax(url, { responseType: 'blob' }); if (result.response) { const filename = `${name || moment(new Date()).format('YYYYMMDDHHmmss')}.${url.replace( /(.*\.)/, '', )}`; downloadFile(result.response, filename); return Promise.resolve('success'); } else { return Promise.reject('error'); } }; export default download;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章