最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue.js 使用axios實(shí)現(xiàn)下載功能的示例

 更新時(shí)間:2018年03月05日 09:55:58   作者:seanxwq  
下面小編就為大家分享一篇vue.js 使用axios實(shí)現(xiàn)下載功能的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看

本文主要來(lái)源于知乎一個(gè)回答,這里紅色部分做了自己的處理,雖然自己的少,可是很有用的幾句代碼哦

只好回答一下axios如何攔截get請(qǐng)求并下載文件的了。

Ajax無(wú)法下載文件的原因

瀏覽器的GET(frame、a)和POST(form)請(qǐng)求具有如下特點(diǎn):

response會(huì)交由瀏覽器處理

response內(nèi)容可以為二進(jìn)制文件、字符串等

Ajax請(qǐng)求具有如下特點(diǎn):

response會(huì)交由Javascript處理

response內(nèi)容僅可以為字符串

因此,Ajax本身無(wú)法觸發(fā)瀏覽器的下載功能。

Axios攔截請(qǐng)求并實(shí)現(xiàn)下載

為了下載文件,我們通常會(huì)采用以下步驟:

發(fā)送請(qǐng)求

獲得response

通過(guò)response判斷返回是否為文件

如果是文件則在頁(yè)面中插入frame

利用frame實(shí)現(xiàn)瀏覽器的get下載

我們可以為axios添加一個(gè)攔截器:

import axios from 'axios'
// download url
const downloadUrl = url => {
 let iframe = document.createElement('iframe')
 iframe.style.display = 'none'
 iframe.src = url
 iframe.onload = function () {
 document.body.removeChild(iframe)
 }
 document.body.appendChild(iframe)
}
// Add a response interceptor
axios.interceptors.response.use(c=> {
 // 處理excel文件
 if (res.headers && (res.headers['content-type'] === 'application/x-msdownload' || res.headers['content-type'] === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')) {
 downloadUrl(res.request.responseURL)
 
 <span style="color:#ff0000;"> res.data='';
 res.headers['content-type'] = 'text/json'
 return res;</span>
 }
 ...
 return res;
}, error => {
 <span style="color:#ff0000;">// Do something with response error
 return Promise.reject(error.response.data || error.message)</span>
})
export default axios

之后我們就可以通過(guò)axios中的get請(qǐng)求下載文件了。

以上這篇vue.js 使用axios實(shí)現(xiàn)下載功能的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

临沂市| 遂溪县| 大竹县| 九龙城区| 剑河县| 石景山区| 泸西县| 宣汉县| 崇仁县| 高平市| 渑池县| 灵武市| 江达县| 红桥区| 芷江| 历史| 普宁市| 克拉玛依市| 若尔盖县| 甘南县| 兴城市| 天气| 泾川县| 策勒县| 榆林市| 兴仁县| 凌云县| 舞钢市| 泰宁县| 扬中市| 绍兴县| 全椒县| 翁牛特旗| 温泉县| 武陟县| 体育| 平度市| 云和县| 临泽县| 兖州市| 福海县|