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

Foreman Ubuntu16 Schnellinstallation

Kurzanleitung Das Foreman-Installationsprogramm i...

Anwendungsbeispiele für den Mysql Inner Join (unbedingt lesen)

Grammatikregeln SELECT Spaltenname(n) FROM Tabell...

Detaillierte Erklärung der grundlegenden Interaktion von Javascript

Inhaltsverzeichnis 1. So erhalten Sie Elemente Ho...

Welche Nachteile hat die Bereitstellung der Datenbank in einem Docker-Container?

Vorwort Docker erfreut sich seit zwei Jahren groß...

Verwenden Sie HTML und CSS, um Ihren eigenen warmen Mann „Dabai“ zu erstellen.

Das Endergebnis sieht so aus, ist es nicht süß … ...

Beispielcode zur Implementierung des Verlaufs in Vuex

Ich habe vor Kurzem eine visuelle Operationsplatt...

XHTML-Tutorial: Der Unterschied zwischen Transitional und Strict

Tatsächlich ist XHTML 1.0 in zwei Typen unterteil...

Detaillierte Erklärung der Tomcat-Verzeichnisstruktur

Inhaltsverzeichnis Verzeichnisstruktur bin-Verzei...

Implementierung eines Docker-Cross-Host-Netzwerks (manuell)

1. Einführung in Macvlan Vor dem Aufkommen von Ma...