Hintergrund-Controller@RequestMapping("/getPDFStream") @AntwortBody public void getPDFStream(HttpServletRequest Anfrage,HttpServletResponse Antwort) { versuchen { Anfrage.setCharacterEncoding("utf-8"); } Fang (UnsupportedEncodingException e) { logger.error("Zeichensatz UnsupportedEncodingException festlegen"); } String Dateiname = Anfrage.getParameter("Dateiname"); //DateipfadString filePathname = Const.UPLOAD_HBFILE_PATH + "/" + fileName + ".pdf"; Datei Datei = neue Datei (Dateipfadname); byte[] Daten = null; wenn (!file.exists()) { logger.error("Leider existiert die Datei nicht!"); } anders { versuchen { FileInputStream-Eingabe = neuer FileInputStream(Datei); Daten = neues Byte[Eingabe.verfügbar()]; Eingabe.Lesen(Daten); Antwort.getOutputStream().write(data); Eingabe.schließen(); } Fang (Ausnahme e) { // TODO Automatisch generierter Catch-Block e.printStackTrace(); logger.error("Ausnahme bei der Verarbeitung der PDF-Datei"); } } } Rezeption Kapseln Sie Axios, Request.js Axios von „Axios“ importieren /** * Methode zum Kapseln asynchroner Axios-Anfragen================== */ //Erstellen Sie ein Axios-Objekt----------- const Anfrage = axios.erstellen({ //baseURL:'/dev-api', //Basispfad baseURL:process.env.VUE_APP_BASE_API, //Lade je nach Umgebung unterschiedliche Konstantenwerte // baseURL: '/', timeout: 50000, //Anforderungstimeout, 50000 Millisekunden}) //Anforderungs-Interceptor einrichten====================================== //Abfangen anfordern-------------------- request.interceptors.request.use(config => { //Abfangen der Anforderung config.data = { ...Konfigurationsdaten, Benutzer-ID: sessionStorage.getItem('Benutzer-ID') } Konfiguration zurückgeben; }, Fehler => { //Ausnahme return Promise.reject(error); //es6 schreibt }); //Antwort-Interceptor einrichten==================================== //Auf Abfangen reagieren-------------------- Anfrage.Interceptors.Response.Verwenden(Antwort => { wenn(!response.data||response.data==""){ return '{"flag":"failure","msg":"Unbekannter Fehler"}'; } Antwortdaten zurückgeben; },Fehler =>{ returniere Promise.reject(Fehler); }) Export-Standardanforderung //Exportieren Sie benutzerdefinierte Axios-Objekte zur Verwendung durch andere Komponenten Definieren Sie die Methode common.js Importanforderung von '@/utils/request' //Importiere die gekapselte Axios-Anforderungsmethode Exportfunktion getPDFStream(param) { Rückgabeanforderung({ URL: "xxxxxx/getPDFStream", Methode: 'post', // Parameterdaten übergeben: param, Header: { 'Inhaltstyp': 'Anwendung/x-www-form-urlencoded' }, Antworttyp: "Blob", transformRequest: Funktion(Objekt) { var str = []; für (var p in obj) str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); return str.join("&"); }, }) } Seitencode <a-modal Breite="900px" Titel="Dateiansicht" v-Modell="lookPdfFile" :Fußzeile="null" :forceRender="wahr" @ok="PDF-Datei ansehen" > <div :style="{ Höhe: '600px', min. Höhe: '500px', Rand: '8px 0px' }"> <iframe: src="pdfUrl" id="VorschauPDF" frameborder="0" style="Breite: 100 %; Höhe: 100 %"></iframe> </div> </a-modal> //Importmethodeimport {getPDFStream} von "@/api/common"; //Daten definieren lookPdfFile:false, //PDF-Vorschau pdfUrl:'', // PDF-Pfad Schlüsselcode (rufen Sie nach Erhalt des Dateinamens die Methode getPDFStream auf, um den Dateistream abzurufen) lass _this = dies; wenn(Suffix == 'pdf'){ getPDFStream({ Dateiname: Dateiname, }).dann(res => { let reader = neues Fenster.FileReader(); // Verwenden Sie readAsArrayBuffer, um die Datei zu lesen. Die Ergebniseigenschaft enthält ein ArrayBuffer-Objekt, um die Daten der gelesenen Datei darzustellen. reader.readAsArrayBuffer(res); reader.onload = Funktion(e) { const Ergebnis = e.Ziel.Ergebnis const Inhaltstyp = res.Typ // Blob-Bild generieren, erfordert Parameter (Byte-Array, Dateityp) const blob = neuer Blob([Ergebnis], { Typ: 'Anwendung/pdf' }) // Verwenden Sie Blob, um eine URL zu erstellen, die auf ein typisiertes Array verweist. URL.createObjectURL ist eine Methode einer neuen Blob-Datei, die eine normale URL generieren und direkt verwendet werden kann, z. B. auf img.src if (window.createObjectURL != undefined) { // basic _this.pdfUrl = Fenster.createObjectURL(blob)+'#toolbar=0' } sonst wenn (window.webkitURL != undefiniert) { // WebKit oder Chrome versuchen { _this.pdfUrl = Fenster.webkitURL.createObjectURL(blob)+'#toolbar=0' } Fehler abfangen { } } sonst wenn (window.URL != undefiniert) { // mozilla(firefox) versuchen { _this.pdfUrl = Fenster.URL.createObjectURL(blob)+'#toolbar=0' } Fehler abfangen { } } } dies.$nextTick(() => { dies.lookPdfFile = wahr; }) }) zurückkehren; } Dies ist das Ende dieses Artikels zum Empfangen von Binärdateiströmen in Vue zur Implementierung der PDF-Vorschau. Weitere relevante Inhalte zur PDF-Vorschau von Vue-Binärdateiströmen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Zusammenfassung der Übermittlungsmethoden für Webformulare
>>: Detaillierte Erklärung zu Padding und Abkürzungen im CSS-Boxmodell
Heutzutage sprechen wir oft über Web 2.0. Was als...
In diesem Artikelbeispiel wird der spezifische Co...
1. Adresse herunterladen https://dev.mysql.com/do...
Inhaltsverzeichnis Vorwort 1. Objekt.freeze() 2. ...
Szenario 1: Aufgrund von Serverbeschränkungen ist...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Verstehen 2. Verwendung 1. ...
Zuvor habe ich MySQL 5.7 verwendet, aber da MySQL...
Inhaltsverzeichnis 1. Open-Source-Lagerverwaltung...
MySQL 5.7 fügt viele neue Funktionen hinzu, wie z...
vue-cli verwendet stimulsoft.reports.js (Tutorial...
Dieser Artikel veranschaulicht anhand von Beispie...
Inhaltsverzeichnis Lösung: 1. IGNORIEREN 2. ERSET...
Bei der Flugbahnwiedergabe des WeChat-Applets wer...
Inhaltsverzeichnis 1. Einleitung 2. Rendern 3. Co...