/** * 获取 query string * @param {*} params * @returns string */ function getQueryString(params) { if (!params) return ; const keys = Object.keys(params) const arr = keys.map((key) => { const val = params[key] if (val === null || val === undefined) return false; return `${key}=${encodeURIComponent(val)}` }) // eslint-disable-next-line consistent-return return arr.filter(Boolean).join('&') } export function fetchBlob(url, opt) { const { params, ...initArgs } = opt || {} const resource = params ? `${url}?${getQueryString(params)}` : url return window.fetch(resource, initArgs).then(response => response.blob()) } export function downloadBlob(fileName, blob) { const url = window.URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.setAttribute('download', fileName); link.click(); window.URL.revokeObjectURL(url); } export function downloadUrl(fileName, url, opt) { return fetchBlob(url, opt).then(blob => downloadBlob(fileName, blob)) };