ホームページ  >  記事  >  ウェブフロントエンド  >  axiosを使ってvue.jsにダウンロード機能を実装する方法

axiosを使ってvue.jsにダウンロード機能を実装する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-28 14:33:092171ブラウズ

今回は、axios を使用して vue.js にダウンロード機能を実装する方法と、axios を使用して vue.js にダウンロード機能を実装するときの注意事項について説明します。以下は実際的なケースです。一見。

この記事は主に Zhihu の回答から来ています。小さいですが、非常に便利なコードです。

axios がどのようにリクエストを取得し、ファイルをダウンロードするかについて答えなければなりません。 。

Ajaxがファイルをダウンロードできない理由

ブラウザのGET(フレーム、a)リクエストとPOST(フォーム)リクエストには次の特徴があります: レスポンスはブラウザによって処理されます

レスポンスの内容はバイナリファイル、

String

など

Ajaxリクエストには次の特徴があります:

レスポンスは処理のためにJavascriptに渡されます

レスポンスの内容は文字列のみですしたがって、Ajax自体はできませんブラウザのダウンロード機能をトリガーします。

Axios はリクエストをインターセプトし、ダウンロードを実装します

ファイルをダウンロードするには、通常次の手順を使用します:

リクエストを送信する

レスポンスを取得するレスポンスを使用して、戻り値はファイルです

ファイルの場合は、ページにフレームを挿入します

フレームを使用してブラウザのダウンロード取得を実装します

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 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

Baidu の BAE を通じて vue プロジェクトを公開する方法

vue へのハイチャートの導入についての詳細な図解説明

以上がaxiosを使ってvue.jsにダウンロード機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。