Vue implementiert Funktionen zum Hoch- und Herunterladen von Dateien

Vue implementiert Funktionen zum Hoch- und Herunterladen von Dateien

In diesem Artikelbeispiel wird der spezifische Code von Vue zur Implementierung von Datei-Upload- und Download-Funktionen zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

1. ein Tag-Download-Attribut

In H5 wird dem A-Tag ein Download-Attribut hinzugefügt, um die Datei direkt herunterzuladen, und der Dateiname ist der Dateiname des Download-Attributs.

  • Das Download-Attribut unterstützt derzeit nur Google Chrome und Mozilla Firefox. Andere Browser unterstützen dieses Attribut nicht.
  • „Download“ ist ein neues Attribut in H5. H5 hatte dieses Attribut vorher nicht.

2. URL.createObjectURL

Die Methode URL.createObjectURL() erstellt eine URL, die auf das Parameterobjekt basierend auf den übergebenen Parametern verweist. Diese URL existiert nur in dem Dokument, in dem sie erstellt wird. Die neue Objekt-URL verweist auf das ausgeführte Dateiobjekt oder Blob-Objekt.

Ein File-Objekt ist eine Datei. Wenn ich beispielsweise zum Hochladen von Dateien den Tag input type="file" verwende, ist jede darin enthaltene Datei ein File-Objekt.

Blob-Objekte sind binäre Daten. Beispielsweise ist das von new Blob() erstellte Objekt ein Blob-Objekt. Wenn beispielsweise in XMLHttpRequest der responseType als blob angegeben ist, ist der Rückgabewert ebenfalls ein Blob-Objekt.

let URL = Fenster.URL || Fenster.webkitURL;
let downloadUrl = URL.createObjectURL(blob || Datei);

3. URL.revokeObjectURL

Die Methode URL.revokeObjectURL() gibt eine von URL.createObjectURL() erstellte Objekt-URL frei. Wenn das Objekt nicht mehr benötigt wird, muss es freigegeben werden. Nach der Freigabe verweist die Objekt-URL nicht mehr auf die angegebene Datei.

downloadUrl && URL.revokeObjectURL(downloadUrl);

4. Dateien mit Vue.js hochladen und herunterladen

<Vorlage>
    <div Klasse="btn-box">
        <h3>Dateiupload:</h3>
        <input Klasse="file-input" Typ="Datei" @change="getFile($event)" />
        <el-button type="primary" @click="upload">Datei hochladen (POST)</el-button>
        <h3>Dateidownload:</h3>
        <el-button type="primary" @click="downloadLink">Laden Sie die verknüpfte Datei herunter (window.open)</el-button>
        <el-button type="primary" @click="downloadBlobByGet">Binärer Stream-Download (GET)</el-button>
        <el-button type="primary" @click="downloadBlobByPost">Binärer Stream-Download (POST)</el-button>
    </div>
</Vorlage>
 
<Skript>
    Axios von „Axios“ importieren
    Standard exportieren {
        Name: "attendPoint",
        Daten() {
            zurückkehren {,
                Datei: null,
                Dateiname: "test.xlsx"
            }
        },
        Methoden: {
            // Datei auswählen getFile(event) {
                diese.Datei = Ereignis.Ziel.Dateien[0];
            },
 
            // Datei hochladen (POST)
            hochladen() {
                let url = "http://localhost:3000/upload/test";
                let formData = neue FormData();
                formData.append("name", "zhangsan");
                formData.append("Alter", "18");
                formData.append("Datei", diese.Datei);
                let konfiguration = {
                    Überschriften: {
                        "Inhaltstyp": "multipart/Formulardaten"
                    }
                }
                axios.post(url, formData, config).then((res) => {
                    dieser.Dateiname = res.data.downloadUrl;
                    this.$message.success("Upload erfolgreich!");
                }).catch(() => {
                    this.$message.error("Bitte laden Sie zuerst die Datei hoch!");
                })
            },
 
            // Lade die Datei mit dem Link herunter (window.open)
            downloadLink() {
                wenn (dieser.Dateiname) {
                    Fenster.öffnen("http://localhost:3000/download/test?fileName=" + dieser.fileName);
                }
            },
 
            //Binärer Stream herunterladen (GET)
            asynchroner Download von BlobByGet() {
                let urlGet = "http://localhost:3000/download/test?fileName=" + dieser.fileName;
                Lassen Sie fileData = await axios.get(urlGet, { responseType: "blob" });
                let URL = Fenster.URL || Fenster.webkitURL;
                let downloadUrl = URL.createObjectURL(fileData.data);
                sei a = document.createElement("a");
                a.href = Download-URL;
                a.download = this.fileName; //Dateiname nach dem Download a.click();
                a = null;
                downloadUrl && URL.revokeObjectURL(downloadUrl);
            },
 
            //Binärer Stream-Download (POST)
            asynchroner Download von BlobByPost() {
                let urlPost = "http://localhost:3000/download/post/test";
                lass fileData = warte auf axios({
                    Methode: "post",
                    url: urlPost, // Anfrageadresse data: { fileName: this.fileName }, // Parameter responseType: "blob" // gibt den vom Server zurückgegebenen Datentyp an })
                let URL = Fenster.URL || Fenster.webkitURL;
                let downloadUrl = URL.createObjectURL(fileData.data);
                sei a = document.createElement("a");
                a.download = dieser.Dateiname;
                a.href = Download-URL;
                ein.Klick();
                a = null;
                downloadUrl && URL.revokeObjectURL(downloadUrl);
            },
        },
    }
</Skript>
 
<Stilbereich>
    .btn-box {
        Polsterung: 20px;
    }
    .el-Schaltfläche,
    Eingabe {
        maximale Breite: Inhalt anpassen;
        Anzeige: Block;
        Rand: 20px;
    }
</Stil>

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 das Hoch- und Herunterladen von Dateien
  • Springboot+vue zum Realisieren des Hoch- und Herunterladens von Dateien
  • Vue Excel-Upload-Vorschau und Tabelleninhalt-Download in Excel-Datei
  • Springboot integriert Vue zum Hoch- und Herunterladen von Dateien
  • Vue implementiert Funktionen zum Hochladen, Lesen und Herunterladen von Dateien
  • Zwei Möglichkeiten zum Implementieren von Excel-Dateiupload- und -downloadfunktionen in Vue
  • vue-cli+axios realisiert die Funktion zum Hoch- und Herunterladen von Dateien (der Download-Empfangshintergrund gibt den Dateistream zurück)

<<:  Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors

>>:  Tutorial zur Installation und Konfiguration der Centos7-MySQL-Datenbank

Artikel empfehlen

MySQL 8.0.19 Win10 - Schnellinstallations-Tutorial

Dieses Tutorial enthält das Installationstutorial...

Teilen Sie das Problem, dass Ubuntu 19 die Docker-Quelle nicht installieren kann

Entsprechend den wichtigsten Websites und persönl...

Die umfassendsten 50 Mysql-Datenbankabfrageübungen

Diese Datenbankabfrageanweisung ist eine von 50 D...

So fügen Sie einer großen MySQL-Tabelle eine Spalte hinzu

Die Frage wird hier zitiert: https://www.zhihu.co...

So erzielen Sie mit CSS einen Daten-Hotspot-Effekt

Die Wirkung ist wie folgt: analysieren 1. Hier se...

Natives JS zur Implementierung der Paging-Klicksteuerung

Dies ist eine Interviewfrage, die die Verwendung ...

VM VirtualBox virtuelle Maschine mounten freigegebenen Ordner

Eine Umgebung Installieren Sie VMware Tools auf C...

W3C Tutorial (11): W3C DOM Aktivitäten

Das Document Object Model (DOM) ist eine Plattfor...

Problemlösungsvorgänge für Alpine Docker-Bildschriftarten

1. Führen Sie Schriftarten aus, öffnen Sie den Sc...

Implementierung des CSS-Animationseffekts für dynamische Höhenübergänge

Diese Frage stammt aus einer Nachricht auf Nugget...

Lösung für die nicht angezeigte IP-Adresse unter Linux

Inhaltsverzeichnis Vorwort Lösung: Schritt 1 Schr...

Vue3+Skript-Setup+ts+Vite+Volar-Projekt

Inhaltsverzeichnis Erstellen Sie ein Vue + TS-Pro...