Vue implementiert den Download von ZIP-Dateien

Vue implementiert den Download von ZIP-Dateien

In diesem Artikelbeispiel wird der spezifische Code von Vue zum Herunterladen von ZIP-Dateien zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

el-Taste

<el-button size="mini" type="success" @click="downloadHandle(fileName, fileLocation)">Herunterladen</el-button>

js-Verarbeitungsanweisungen

Anforderungs-Interceptor request.js

Axios wird eingeführt und eine Axios-Instanz wird erstellt und ein Anforderungs-Interceptor wird hinzugefügt

Axios von „Axios“ importieren


// Eine Axios-Instanz erstellen const service = axios.create({
  baseURL: '', // Basis-URL der API
  Timeout: 20000, // Anforderungs-Timeout-Parameter: {
 //Anforderungsparameter}
});

// Interceptor anfordern service.interceptors.request.use(config => {
  // .... Konfiguration wird verarbeitet......
  
  Konfiguration zurückgeben
}

Standarddienst exportieren

Der Anforderungs-Interceptor wird vor der Anforderung verarbeitet und kann HTTP-Header-Einstellungen hinzufügen, zum Beispiel:

1. HTTP-Anforderungsheader: Token, Cookie, Sitzung und andere Werte werden hinzugefügt (config.headers ['Backend-Wertname'] = 'zugehöriger Wert';):

(1) config.headers['token'] = 'Token-Wert';
(2) config.headers['cookie'] = 'Cookie-Wert';
(3) config.headers['session'] = 'Sitzungswert';

2. Header-Post-Einstellungen: wie Content-Type

Um eine Datei hochzuladen, verwenden Sie: config.headers.post['Content-Type'] = 'multipart/form-data';

ZIP-Datei herunterladen

1. request.js-Code:

Axios von „Axios“ importieren


// Eine Axios-Instanz erstellen const service = axios.create({
  baseURL: '', // Basis-URL der API
  Timeout: 20000, // Anforderungs-Timeout-Parameter: {
 //Anforderungsparameter}
});

// Interceptor anfordern service.interceptors.request.use(config => {
  // Konfiguration fügt Token-Wert hinzu config.headers['token'] = getToken(); // getToken() ist meine Methode zur Werterfassung, die Systemüberprüfung verwendet die Rückgabekonfiguration
}

Standarddienst exportieren

2. Vue-Seite verweist auf request.js

Importieren Sie die Anforderung von „@/utils/request“.

Download-Verarbeitung

// fileName Download-Einstellungsname, fileLocation Dateispeichername downloadHandle(fileName,fileLocation) {
   lass prome = {
     Dateispeicherort: Dateispeicherort
   }
   Anfrage.Post(
    '/api/downloadFile', 
    Versprechen, 
    {
      Antworttyp: "Blob",
      Zeitüberschreitung: 60000
    }
   ).dann(Antwort => {
     wenn (!Antwort.Größe) {
       diese.$nachricht({
         Meldung: 'Keine Datei zum Download verfügbar',
         Typ: "Warnung"
       })
       zurückkehren
     }
     const url = Fenster.URL.createObjectURL(neuer Blob([Antwort]))
     const link = fenster.dokument.createElement('a')
     link.style.display = "keine"
     link.href = URL
     link.setAttribute('download', Dateiname+'.zip')
     Dokument.Body.AnhängenKind(Link)
     link.klick()
   }).catch((Daten) => {
     console.log(Daten)
   })
},

Hintergrundverarbeitung

Wird von der Java-API basierend auf der Anfrage /api/downloadFile verarbeitet

Paket com.web.controller;

importiere org.springframework.web.bind.annotation.RequestBody;
importiere org.springframework.web.bind.annotation.RequestMapping;
importiere org.springframework.web.bind.annotation.RestController;

importiere javax.servlet.http.HttpServletRequest;
importiere javax.servlet.http.HttpServletResponse;
importiere java.io.File;
importiere java.io.FileInputStream;
importiere java.io.OutputStream;
importiere java.net.URLEncoder;
importiere java.util.Map;

@RestController
@RequestMapping("/api")
öffentliche Klasse DownloadFileDemo {

    /**
     * Dateidownload * @param tranNap
     * @param Anfrage
     * @param Antwort
     */
    @RequestMapping(Wert = "/Download-Datei")
    public void downloadFile(@RequestBody Map<String, Object> tranNap, HttpServletRequest-Anforderung, HttpServletResponse-Antwort) {
        Zeichenfolge Dateispeicherort = tranNap.get("Dateispeicherort")+"";
        versuchen {
            Zeichenfolge Dateipfad = "D:/Datei/" + Dateispeicherort + ".zip";
            //Datei abrufen. Datei. Datei = neue Datei (Dateipfad);
            wenn (!file.exists()) {
                System.out.println("[Dateidownload] Keine Datei zum Download verfügbar");
                zurückkehren;
            }
            FileInputStream fileInputStream = neuer FileInputStream(Datei);
            //Setzen Sie den HTTP-Antwortheader, um dem Browser mitzuteilen, dass er den Dateinamen Dateiname herunterladen soll.
            response.setHeader("Content-Disposition", "attachment;Filename=" + URLEncoder.encode(fileLocation+".zip", "UTF-8"));
            OutputStream Ausgabestream = Antwort.getOutputStream();
            byte[] bytes = neues byte[2048];
            int länge = 0;
            während ((Länge = fileInputStream.read(Bytes)) > 0) {
                outputStream.write(Bytes, 0, Länge);
            }
            fileInputStream.schließen();
            outputStream.schließen();
        } Fang (Ausnahme e) {
            System.out.println("[Dateidownload] Ausnahme beim Herunterladen der Datei");
            e.printStackTrace();
            zurückkehren;
        }
    }

}

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Vue implementiert die Funktion zum Klicken auf eine Schaltfläche zum Herunterladen von Dateien
  • So laden Sie Dateien herunter und ermitteln den Status in VUE
  • Tutorial zum Batch-Download von Dateien/Bildern im Zip-Format mit Vue
  • Zusammenfassung der drei Möglichkeiten zum Herunterladen von Dateien im Front-End-Vue

<<:  So installieren Sie Docker auf Ubuntu20.04 LTS

>>:  So installieren Sie WSL2 Ubuntu20.04 unter Windows 10 und richten die Docker-Umgebung ein

Artikel empfehlen

Vergleich mehrerer Beispiele zur Einfügungseffizienz in MySQL

Vorwort Aus beruflichen Gründen musste ich kürzli...

Installieren Sie Apache2.4+PHP7.0+MySQL5.7.16 auf macOS Sierra

Obwohl Mac-Systeme mit PHP und Apache ausgeliefer...

JavaScript-Implementierung des Spiels des Lebens

Inhaltsverzeichnis Konzept-Einführung Logische Re...

Die vollständige Liste der MIME-Typen

Was ist ein MIME-TYP? 1. Zunächst müssen wir vers...

Der HTML 5-Entwurf wurde kein formeller Standard

<br />Gestern habe ich beim W3C gesehen, das...

CSS-Tipps zur Implementierung der Chrome-Tab-Leiste

Dieses Mal schauen wir uns ein Navigationsleisten...

So melden Sie sich unter Shell schnell ohne Kennwort bei der MySQL-Datenbank an

Hintergrund Wenn wir uns über den MySQL-Client in...

Was ist ZFS? Gründe für die Verwendung von ZFS und seine Funktionen

Geschichte von ZFS Das Z-Dateisystem (ZFS) wurde ...

Schritte zum Öffnen des MySQL-Binlogs

Binlog ist eine binäre Protokolldatei, die zum Au...