So empfangen Sie einen binären Dateistream in Vue, um eine PDF-Vorschau zu realisieren

So empfangen Sie einen binären Dateistream in Vue, um eine PDF-Vorschau zu realisieren

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:
  • vue-pdf realisiert Online-Dateivorschau
  • So zeigen Sie eine PDF-Datei mit pdfjs in vue in der Vorschau an
  • Vue-pdf implementiert eine Online-Vorschau von PDF-Dateien
  • Vue integriert PDF.js, um eine PDF-Vorschau zu implementieren und Schritte zum Hinzufügen von Wasserzeichen durchzuführen
  • vue Beispielcode zur Verwendung von vue-pdf zur Implementierung einer PDF-Onlinevorschau
  • Vue implementiert Online-Vorschau von PDF-Dateien und Download (pdf.js)
  • Vue-Plugin-Entwicklung: So verwenden Sie pdf.js, um eine Online-Vorschau von PDF-Dokumenten auf Mobiltelefonen zu realisieren
  • So implementieren Sie die PDF-Dateivorschau in Vue

<<:  Detaillierte Zusammenfassung der Übermittlungsmethoden für Webformulare

>>:  Detaillierte Erklärung zu Padding und Abkürzungen im CSS-Boxmodell

Artikel empfehlen

Verwendung des Fokus-innerhalb-Selektors von CSS3

Pseudoelemente und Pseudoklassen Apropos, schauen...

Informationen zum Textumbruchproblem bei IE-Labels (LI)

Ich habe lange damit gekämpft und nach einiger Suc...

Wie stelle ich Tomcat als automatisch gestarteten Dienst ein? Der schnellste Weg

Stellen Sie Tomcat so ein, dass der Dienst automa...

So installieren und konfigurieren Sie den SSH-Dienst in Ubuntu 18.04

Installieren Sie das SSH-Tool 1. Öffnen Sie das T...

Vue verwendet Echart, um Beschriftungen und Farben anzupassen

In diesem Artikelbeispiel wird der spezifische Co...

Beispiele für neue Selektoren in CSS3

Struktureller (Position) Pseudoklassenselektor (C...

Was sind die Attribute des JSscript-Tags

Was sind die Attribute des JS-Skript-Tags: charse...

Beispiel für die Implementierung von QR-Code-Scaneffekten mit CSS3

Online-Vorschau https://jsrun.pro/AafKp/ Erster B...

Probleme und Lösungen bei der Verwendung der jsx-Syntax in React-vscode

Problembeschreibung Nach der Installation des Plu...