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

Was tun, wenn der von Docker Run gestartete Container hängt und Daten verliert?

Szenariobeschreibung In einem bestimmten System w...

Beispielcode zur Implementierung sechseckiger Rahmen mit CSS3

Die äußerste BoxF dreht sich um 120 Grad, die zwe...

Installieren Sie das komprimierte MySQL5.7-Paket schnell unter Windows

In diesem Artikel erfahren Sie, wie Sie das kompr...

JavaScript-Plugin-Kapselung für Tabellenwechsel

In diesem Artikel wird der Kapselungscode von Jav...

JavaScript-Farbbetrachter

In diesem Artikelbeispiel wird der spezifische Ja...

JavaScript zum Anzeigen und Ausblenden von Bildern

JavaScript zeigt und verbirgt Bilder. Zu Ihrer In...

Steuern Sie die vertikale Mitte des Textes im HTML-Textfeld über CSS

Wenn das Höhenattribut von Text definiert ist, wir...

Einführung in die Verschachtelungsregeln von HTML-Tags

Es gibt viele XHTML-Tags: div, ul, li, dl, dt, dd...