封裝文件下載的方法
1、在封裝請求攔截的js文件中需要有以下準備條件:
引入axios,在請求前加上token(這里token是從vuex中取的,這里不再闡述在vuex中的保存方法)
1 import axios from 'axios' 2 // 設置post請求頭 3 axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8' 4 const http = axios.create({ 5 // baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url api的baseUrl 6 timeout: 30000 // 請求超時時間 7 }) 8 9 http.interceptors.request.use(config => { 10 // 在發送請求之前做些什么 驗證token之類的 11 if (store.getters.token) { 12 config.headers['Authorization'] = store.getters.token ? getToken() : store.getters.token 13 } 14 return config 15 }, error => { 16 // 對請求錯誤做些什么 17 Message.error({ message: '請求超時!' }) 18 return Promise.error(error) 19 })
2、文件下載封裝函數,然后導出該方法
1 /** 2 * Request請求,文件下載 3 * @param RequestParams Path 請求地址,Method請求方法 4 * @param urlParams 請求參數拼接在url上 5 * @param data 請求參數放在請求體 6 * **/ 7 export function RequsetForDownLoadFile(RequestParams, urlParams, responseData, FileName) { 8 return new Promise((resolve, reject) => { 9 http({ 10 method: RequestParams.Method, 11 url: RequestParams.Path, 12 params: urlParams, // 請求參數拼接在url上 13 data: responseData, // 請求參數放在請求體 14 responseType: 'blob' 15 }) 16 .then(response => { 17 const link = document.createElement('a') 18 const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' }) 19 link.style.display = 'none' 20 link.href = URL.createObjectURL(blob) 21 // link.download = res.headers['content-disposition'] //下載后文件名 22 link.download = FileName // 下載的文件名 23 document.body.appendChild(link) 24 link.click() 25 document.body.removeChild(link) 26 resolve(response.data) 27 }).catch(err => { 28 // 請求失敗 29 reject(err) 30 }) 31 })
3、在需要下載的頁面中導入并調用
import { RequsetForDownLoadFile } from '...'
RequsetForDownLoadFile({ Method: 'get', Path: '/api/pesp-manage-system/fapsysfile/downloadFile' }, { 請求地址后拼接的參數 }, null, 請求體中的參數)

浙公網安備 33010602011771號