以下に、vue.js を使用して axios を使用してダウンロード機能を実装する例を紹介します。これは良い参考値であり、皆さんの役に立つことを願っています。
この記事は主に Zhihu の回答から来ています。小さいですが、非常に便利なコードです。
axios がどのようにリクエストを取得し、ファイルをダウンロードするかについて答えなければなりません。 。Ajaxがファイルをダウンロードできない理由
ブラウザのGET(フレーム、a)リクエストとPOST(フォーム)リクエストには以下の特徴があります:
レスポンスはブラウザによって処理されますレスポンスの内容は 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
nodejsでQRコードを生成する超簡単なメソッドを実装
以上がaxios を使用して vue.js 経由でダウンロード機能を実装する (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。