首頁  >  文章  >  web前端  >  如何在vue.js中使用axios實作下載功能

如何在vue.js中使用axios實作下載功能

php中世界最好的语言
php中世界最好的语言原創
2018-03-28 14:33:092262瀏覽

這次帶給大家如何在vue.js中使用axios實作下載功能,在vue.js中使用axios實作下載功能的注意事項有哪些,以下就是實戰案例,一起來看一下。

本文主要來自於知乎一個回答,這裡紅色部分做了自己的處理,雖然自己的少,可是很有用的幾句程式碼哦

只好回答一下axios如何攔截get請求並下載檔案的了。

Ajax無法下載檔案的原因

#瀏覽器的GET(frame、a)和POST(form)請求具有以下特點:

response會交由瀏覽器處理

response內容可以為二進位檔案、字串

##Ajax請求具有如下特點:

response會交由

Javascript處理

response內容僅可以為字串

因此,Ajax本身無法觸發瀏覽器的下載功能。

Axios攔截請求並實現下載

#為了下載文件,我們通常會採用以下步驟:

發送請求

獲得response

透過response判斷回傳是否為檔案

如果是檔案則在頁面中插入frame

利用frame實現瀏覽器的get下載

我們可以為axios新增一個攔截器:

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
之後我們就可以透過axios中的get請求下載檔案了。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

vue專案怎樣透過百度的BAE發布

vue中引入highcharts的圖文詳解

以上是如何在vue.js中使用axios實作下載功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn