この記事の例では、Vueの具体的なコードを共有し、zipファイルをダウンロードして参考にしています。具体的な内容は次のとおりです。 エルボタン <el-button size="mini" type="success" @click="downloadHandle(fileName, fileLocation)">ダウンロード</el-button> js処理命令 リクエストインターセプター request.js
'axios' から axios をインポートします // axiosインスタンスを作成する const service = axios.create({ baseURL: '', // API のベース URL timeout: 20000, // リクエストタイムアウトパラメータ: { // リクエストパラメータ} }); // リクエストインターセプター service.interceptors.request.use(config => { // .... 設定追加処理...... 設定を返す } デフォルト サービスをエクスポートする リクエスト インターセプターはリクエストの前に処理され、HTTP ヘッダー設定を追加できます。次に例を示します。 1. HTTPリクエストヘッダー:トークン、Cookie、セッションなどの値が追加されます(config.headers['backend value name'] = 'related value';): (1) config.headers['token'] = 'トークン値'; 2. ヘッダー投稿設定: Content-Typeなど ファイルをアップロードするには、config.headers.post['Content-Type'] = 'multipart/form-data'; を使用します。 zipファイルをダウンロード1. request.js コード: 'axios' から axios をインポートします // axiosインスタンスを作成する const service = axios.create({ baseURL: '', // APIのベースURL timeout: 20000, // リクエストタイムアウトパラメータ: { // リクエストパラメータ} }); // リクエストインターセプター service.interceptors.request.use(config => { // config トークン値を追加 config.headers['token'] = getToken(); // getToken() は値取得メソッドで、システム検証では return config を使用します } デフォルト サービスをエクスポートする 2. Vueページはrequest.jsを参照します '@/utils/request' からリクエストをインポートします ダウンロード処理 // fileName ダウンロード設定名、fileLocation ファイル保存場所名 downloadHandle(fileName,fileLocation) { プローム = { ファイルの場所: ファイルの場所 } リクエスト.post( '/api/downloadFile', プロム、 { レスポンスタイプ: 'blob', タイムアウト: 60000 } ).then(応答 => { 応答サイズが等しい場合 this.$メッセージ({ メッセージ: 「ダウンロード可能なファイルがありません」 タイプ: '警告' }) 戻る } const url = window.URL.createObjectURL(新しいBlob([応答])) 定数リンク = window.document.createElement('a') link.style.display = 'なし' link.href = URL link.setAttribute('download', ファイル名+'.zip') document.body.appendChild(リンク) リンク.クリック() }).catch((データ) => { コンソール.log(データ) }) }, バックグラウンド処理 リクエスト /api/downloadFile に基づいて Java API によって処理されます パッケージ com.web.controller; org.springframework.web.bind.annotation.RequestBody をインポートします。 org.springframework.web.bind.annotation.RequestMapping をインポートします。 org.springframework.web.bind.annotation.RestController をインポートします。 javax.servlet.http.HttpServletRequest をインポートします。 javax.servlet.http.HttpServletResponse をインポートします。 java.io.File をインポートします。 java.io.FileInputStream をインポートします。 java.io.OutputStream をインポートします。 java.net.URLEncoder をインポートします。 java.util.Map をインポートします。 @レストコントローラ @リクエストマッピング("/api") パブリッククラスDownloadFileDemo { /** * ファイルのダウンロード * @param tranNap * @param リクエスト * @param レスポンス */ @RequestMapping(値 = "/downloadFile") パブリック void downloadFile(@RequestBody Map<String, Object> tranNap、HttpServletRequest リクエスト、HttpServletResponse レスポンス) { 文字列 fileLocation = tranNap.get("fileLocation")+""; 試す { 文字列 filePath = "D:/file/" + fileLocation + ".zip"; //ファイルを取得します。File file = new File(filePath); ファイルが存在する場合(){ System.out.println("[ファイルのダウンロード] ダウンロード可能なファイルがありません"); 戻る; } FileInputStream ファイル入力ストリーム = 新しい FileInputStream(ファイル); //ブラウザにファイル名をダウンロードするように指示するHttpレスポンスヘッダーを設定します。Filename response.setHeader("Content-Disposition", "attachment;Filename=" + URLEncoder.encode(fileLocation+".zip", "UTF-8")); 出力ストリーム outputStream = response.getOutputStream(); byte[] バイト = 新しい byte[2048]; 長さ = 0; ((len = fileInputStream.read(bytes)) > 0) の場合 { 出力ストリームに書き込みます(バイト数、0、長さ)。 } ファイル入力ストリームを閉じます。 出力ストリームを閉じます。 } キャッチ (例外 e) { System.out.println("[ファイルのダウンロード] ファイルのダウンロード例外"); e.printStackTrace(); 戻る; } } } 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: ubuntu20.04 LTSにdockerをインストールする方法
>>: Windows 10にWSL2 Ubuntu20.04をインストールしてdocker環境を構築する方法
nginxでサポートされている仮想ホストには3つの種類があります1. ドメイン名ベースの仮想ホスティ...
目次1. HTTPGET 2. HTTP POSTウェブソケット4. Egretのhttpとwebs...
Docker-compose は GitLab をデプロイします1. Dockerをインストールする...
MySQL8.0.12 インストールチュートリアルをみんなで共有します。 1. インストール1.イン...
目次遅延読み込みCSS スタイル: HTML部分:スクリプト部分:要約する遅延読み込み名前の通り、私...
序文指定した文字による結合または分割は一般的なシナリオです。MySQL では結合の記述は比較的簡単で...
目次1. ジョイントインデックスの故障の条件2. インデックス失敗の条件1. ジョイントインデックス...
目次アプレットのソースコードはどこにありますか? PC ミニプログラムはどのように暗号化されますか?...
目次1. ブラウザのクッキーの値を取得する2. RGBを16進数に変換する3. クリップボードにコピ...
この記事では、MySQL 5.7.20のインストールと設定方法を参考までに紹介します。具体的な内容は...
Docker インストール (Alibaba Cloud Server) Docker 公式 Ce...
序文最近、私は小さな個人ブログ プロジェクトを書くのに忙しくしています。 「グローバル検索」機能を実...
成果を達成する 実装コードhtml <div class="wrap"&g...
序文最近、フロントエンドの知識をまとめており、いくつかのインタビューにも参加しました。インタビュー中...
1. はじめに要件は、特定の時間範囲内で、1 時間ごとのデータと前の 1 時間ごとのデータの差と比率...