zip文件和xlsx文件
import axios from 'axios'
import { getToken } from '@/utils/auth'const mimeMap = {xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',zip: 'application/zip'
}const baseUrl = process.env.VUE_APP_BASE_API
// zip下載
export function downLoadZip(str, filename) {var url = baseUrl + straxios({method: 'get',url: url,responseType: 'blob',headers: { 'Authorization': 'Bearer ' + getToken() }}).then(res => {resolveBlob(res, mimeMap.zip)})
}
// xlsx文件下載
export function downLoadXlsx(str, filename) {var url = baseUrl + straxios({method: 'get',url: url,responseType: 'blob',headers: { 'Authorization': 'Bearer ' + getToken() }}).then(res => {resolveBlob(res, mimeMap.xlsx)})
}/*** 解析blob響應內容并下載* @param {*} res blob響應內容* @param {String} mimeType MIME類型*/
export function resolveBlob(res, mimeType) {const aLink = document.createElement('a')var blob = new Blob([res.data], { type: mimeType })// //從response的headers中獲取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 設置的文件名;var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')var contentDisposition = decodeURI(res.headers['content-disposition'])var result = patt.exec(contentDisposition)var fileName = result[1]fileName = fileName.replace(/\"/g, '')aLink.href = URL.createObjectURL(blob)aLink.setAttribute('download', fileName) // 設置下載文件名稱document.body.appendChild(aLink)aLink.click()document.body.appendChild(aLink)
}
xml封裝通用文件下載
// XML 下載方法
export function xmlDownload( url, method, name) {var xhr = new XMLHttpRequest();xhr.open(method, url, true);xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");xhr.setRequestHeader("Authorization", "Bearer " + getToken());xhr.send();xhr.responseType = "blob"; // 返回類型blobxhr.onload = function () {let a = document.createElement("a");let blob = new Blob([this.response], {// type: "text/csv;charset=GBK;",type: "application/x-zip;",});let objectUrl = URL.createObjectURL(blob);a.setAttribute("href", objectUrl);a.setAttribute("download", name || 'final_model.xlsx');a.click();}
}
axios封裝通用文件下載
import axios from 'axios'
// 創建axios實例
const service = axios.create({// axios中請求配置有baseURL選項,表示請求URL公共部分baseURL: process.env.VUE_APP_BASE_API1,// 超時timeout: 60 * 1000
})// 通用下載方法
export function download(url, params, filename, method) {return service[method || "post"](url, params, {transformRequest: [(params) => {return tansParams(params)}],headers: {'Content-Type': 'application/x-www-form-urlencoded'},responseType: 'blob'}).then((data, header) => {const content = dataconst blob = new Blob([content])if ('download' in document.createElement('a')) {const elink = document.createElement('a')elink.download = filenameelink.style.display = 'none'elink.href = URL.createObjectURL(blob)document.body.appendChild(elink)elink.click()URL.revokeObjectURL(elink.href)document.body.removeChild(elink)} else {navigator.msSaveBlob(blob, filename)}}).catch((r) => {console.error(r)})
}