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.
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:
|
<<: Detaillierte Erklärung der Verwendung und Funktion des MySQL-Cursors
>>: Tutorial zur Installation und Konfiguration der Centos7-MySQL-Datenbank
Frage Wie ändere ich den CSS-Pseudoklassenstil mi...
In diesem Artikelbeispiel wird der spezifische Co...
Vorwort: MySQL ist ein relationales Datenbankverw...
Erstellen einer Tabelle CREATE TABLE `map` ( `id`...
Inhaltsverzeichnis 1. Was ist ein Hook? 2. Warum ...
Vorwort Ich glaube, dass jeder auf einem Remote-S...
1. Vorbereitung vor der Installation: 1.1 JDK ins...
Als ich kürzlich Django lernte, musste ich eine D...
1. MySQL installieren Dieser Artikel wird über AP...
Original-URL: http://segmentfault.com/blog/ciaocc/...
Inhaltsverzeichnis 1. Projektanforderungen 2. Dok...
Inhaltsverzeichnis Lebenszyklusfunktionen Allgeme...
SVN ist die Abkürzung für Subversion, ein Open-So...
Hintergrund Manchmal müssen wir den Erstellungsze...
Das im Titel angesprochene Problem lässt sich sch...