前端處理后端返回文件流實現導出Excel
實現功能:
前端發送請求后,接收后端返回的文件流(一般是亂碼),實現導出Excel的方法。
js代碼(封裝的promise對象):
import Vue from 'vue'
import notification from 'ant-design-vue/es/notification'
// 實例化Vue對象
const vm = new Vue()
/**
* 前端處理后端返回文件流實現導出Excel的方法
*
* @export
* @param {String} url 接口地址
* @param {Object} params 傳遞參數
* @param {String} fileName 文件名稱
* @return {Promise} Promise對象
*/
export function getExcelExport (url, params, fileName) {
return new Promise((resolve, reject) => {
vm.$http.post(url, params, { responseType: 'blob' }).then(res => {
const link = document.createElement('a')
const blob = new Blob([res], { type: 'application/vnd.ms-excel' })
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
link.setAttribute('download', `${fileName || '導出文件'}.xls`)
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
resolve({ message: '導出成功' })
}).catch(err => {
notification.error({
message: '錯誤',
description: '導出接口出錯'
})
reject(err)
})
})
}
如有錯誤,請多指教,謝謝!