バックグラウンド コントローラー@RequestMapping("/getPDFStream") @レスポンス本文 パブリック void getPDFStream(HttpServletRequest リクエスト、HttpServletResponse レスポンス) { 試す { リクエスト.setCharacterEncoding("utf-8"); } キャッチ (UnsupportedEncodingException e) { logger.error("文字セット UnsupportedEncodingException を設定しました"); } 文字列 fileName = request.getParameter("fileName"); //ファイルパスString filePathname = Const.UPLOAD_HBFILE_PATH + "/" + fileName + ".pdf"; ファイル file = new File(filePathname); バイト[]データ = null; ファイルが存在する場合(){ logger.error("申し訳ありませんが、ファイルが存在しません!"); } それ以外 { 試す { FileInputStream 入力 = new FileInputStream(ファイル); データ = 新しいバイト[input.available()]; input.read(データ); レスポンス.getOutputStream().write(データ); 入力を閉じます。 } キャッチ (例外 e) { // TODO 自動生成されたキャッチブロック e.printStackTrace(); logger.error("pdf ファイル処理例外"); } } } フロント受付axios、request.jsをカプセル化する 'axios' から axios をインポートします /** * axios 非同期リクエストをカプセル化する方法================== */ //axios オブジェクトを作成する----------- 定数リクエスト = axios.create({ //baseURL:'/dev-api', //ベースパス baseURL:process.env.VUE_APP_BASE_API, //環境に応じて異なる定数値をロード // baseURL: '/', timeout: 50000, //リクエストタイムアウト、50000ミリ秒}) //リクエストインターセプターを設定する====================================== //リクエストのインターセプション-------------------- リクエスト.インターセプター.リクエスト.use(config => { //リクエストインターセプション config.data = { ...config.data、 ユーザーID: sessionStorage.getItem('userId') } 設定を返します。 }, エラー => { //例外 return Promise.reject(error); //es6 書き込み }); //レスポンスインターセプターを設定する==================================== //傍受に応答-------------------- リクエスト.インターセプター.レスポンス.use(レスポンス => { if(!response.data||response.data==""){ '{"flag":"failure","msg":"不明なエラー"}' を返します。 } 応答データを返します。 },エラー =>{ Promise.reject(error) を返します。 }) export default request // 他のコンポーネントで使用するためにカスタム作成された axios オブジェクトをエクスポートします メソッド common.js を定義する import request from '@/utils/request' //カプセル化されたaxiosリクエストメソッドをインポートする export function getPDFStream(param) { リクエストを返す({ url: 'xxxxxx/getPDFStream', メソッド: 'post'、 // パラメータデータを渡す: param, ヘッダー: { 'Content-Type': 'application/x-www-form-urlencoded' }, レスポンスタイプ: 'blob', 変換リクエスト: 関数(obj) { var str = []; (変数 p 内の obj) の場合 str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); str.join("&"); を返します。 }, }) } ページコード <a-モーダル 幅="900px" title="ファイルビュー" v-model="lookPdfFile" :footer="null" :forceRender="true" @ok="PDFファイルを見る" > <div :style="{ 高さ: '600px', 最小高さ: '500px', 余白: '8px 0px' }"> <iframe :src="pdfUrl" id="previewPdf" frameborder="0" style="幅: 100%; 高さ: 100%"></iframe> </div> </a-modal> // メソッドをインポートしますimport {getPDFStream} from "@/api/common"; //データを定義する lookPdfFile:false, //PDF をプレビュー pdfUrl:'', // pdf パス キーコード(ファイル名を取得後、getPDFStreamメソッドを呼び出してファイルストリームを取得します) _this = this とします。 if(サフィックス == 'pdf'){ PDFストリームを取得する({ ファイル名: ファイル名、 }).then(res => { reader を new window.FileReader() に設定します。 // readAsArrayBuffer を使用してファイルを読み取ります。結果プロパティには、読み取ったファイルのデータを表す ArrayBuffer オブジェクトが含まれます。reader.readAsArrayBuffer(res); reader.onload = 関数(e) { 定数結果 = e.target.result 定数コンテンツタイプ = res.type // BLOB イメージを生成します。パラメータが必要です (バイト配列、ファイル タイプ) const blob = new Blob([結果], { type: 'application/pdf' }) // Blobを使用して、型付き配列を指すURLを作成します。URL.createObjectURLは新しいBlobファイルのメソッドで、通常のURLを生成し、img.srcなどに直接使用できます。if (window.createObjectURL != undefined) { // 基本 _this.pdfUrl = window.createObjectURL(blob)+'#toolbar=0' } else if (window.webkitURL != undefined) { // webkit または chrome 試す { _this.pdfUrl = window.webkitURL.createObjectURL(blob)+'#toolbar=0' } キャッチ(エラー){ } } そうでない場合 (window.URL != undefined) { // mozilla(firefox) 試す { _this.pdfUrl = window.URL.createObjectURL(blob)+'#toolbar=0' } キャッチ(エラー){ } } } this.$nextTick(() => { this.lookPdfFile = true; }) }) 戻る; } これで、Vue でバイナリ ファイル ストリームを受信して PDF プレビューを実装する方法についての説明は終わりです。Vue バイナリ ファイル ストリーム PDF プレビューに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
「壮大」という言葉は、おそらく現代のデザイナーが最も聞きたくない言葉でしょう。デザイナー:「デザイン...
まずは投稿する前に! 「I Want to Study on My Own!」に改めて感謝します。た...
<br />表の境界線の CSS 構文具体的な内容には、上境界線の幅、右境界線の幅、下境...
mysql-5.7.20-winx64.zipインストール手順のないインストール パッケージ: ht...
1. はじめにls コマンドはディレクトリの内容を表示するために使用され、Linux で頻繁に使用さ...
node-media-server を使用するプロセスの一部を記録します。この記事の環境はWindo...
1. はじめにGit は、規模の大小を問わずあらゆるプロジェクトを俊敏かつ効率的に処理するために使用...
WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...
この記事では、パーセンテージスコアリングプログレスバーを実現するためのjQueryの具体的なコードを...
概要データベースでは、ツリー ディレクトリと同様に、インデックスを使用してデータ検索を高速化します。...
画像内に下線付きのリンクが表示されても驚かないでください。実はとても簡単なので、あなたにもできるので...
MySQL では、datetime 型は通常、時間を保存するために使用されますが、現在では多くのシス...
html <div class="totop" v-show="...
序文スロークエリとは何か、またスロークエリを最適化するにはどうすればよいか。以下では、これら 2 つ...
目次1. 暗黙的な変換二重等号での変換ブール型変換「+」と「-」 2. 強制型変換' ...