Beispiel für das Hoch- und Herunterladen von Dateien im Front-End mit Vue+Express

Beispiel für das Hoch- und Herunterladen von Dateien im Front-End mit Vue+Express

Erstellen Sie eine neue server.js

 Garn init -y
Garn hinzufügen Express Nodemon -D
var express = erfordern("express");
const fs = erfordern("fs");
var Pfad = erforderlich("Pfad");
const multer = require("multer"); //Pfad angeben var app = express();
app.use(express.json());
app.use(express.urlencoded({ erweitert: true }));
// Front-End löst domänenübergreifende Probleme app.all("*", (req, res, next) => {
  res.header("Zugriffskontrolle-Origin zulassen", "*");
  nächste();
});
// Auf statische Ressourcen zugreifen app.use(express.static(path.join(__dirname)));

// Datei hochladen app.post("/upload", multer({ dest: "./public" }).any(), (req, res) => {
  const { Feldname, Originalname } = req.files[0];
  // Neuen Pfad erstellen const name = fieldname.slice(0, fieldname.indexOf("."));
  const neuerName = "public/" + name + path.parse(originalname).ext;
  fs.rename(req.files[0].Pfad, neuerName, Funktion (err) {
    wenn (Fehler) {
      res.send({ code: 0, msg: "Upload fehlgeschlagen", data: [] });
    } anders {
      res.send({ code: 1, msg: "Upload erfolgreich", data: newName });
    }
  });
});
// Datei herunterladen app.get('/download', function(req, res) {
  res.download('./public/test.xls');
});

// Bild herunterladen app.get('/download/img', function(req, res) {
  res.download('./public/2.jpg');
});

lass Port = 9527;
app.listen(port, () => console.log(`Port gestartet: http://localhost:${port}`));


(1): Frontend-Dateiupload-Anforderung

Der erste Typ: Formular

 <form action="http://localhost:9527/upload" method="POST" encType="multipart/form-data">
      <input type="file" name="user"/>
      <Eingabetyp="Senden" />
    </form>

Bildbeschreibung hier einfügen

Der erste Typ: Eingabefeld

 <Eingabetyp="Datei" @change="changeHandler($event)"/>
     changeHandler(Ereignis) {
      let Dateien = Ereignis.Ziel.Dateien[0];
      console.log("Dateien",Dateien)
      let data = neue FormData();
      data.append(Dateien.Name,Dateien);
      console.log("Daten",Daten)
      axios.post("http://localhost:9527/upload",Daten,{
        Überschriften:{
          "Inhaltstyp": "multipart/Formulardaten"
        }
      }).dann(res =>{
        konsole.log("res",res)
      })
    }, 

Bildbeschreibung hier einfügen

(2): Frontend-Dateidownload

Die erste Methode: Das Backend gibt eine Download-Link-Adresse zurück, die das Frontend direkt verwenden kann
Zweite Methode: Download mithilfe einer binären Streamdatei

 <input type="button" value="Zum Herunterladen klicken" @click="handleDownload">
      handleDownload() {  
    axios({  
      Methode: 'get',  
      URL: "http://localhost:9527/download",  
      Daten: {    
        test: "Testdaten"  
      },  
      responseType: "arraybuffer" // arraybuffer ist eine Schnittstelle zur Verarbeitung von Binärdaten in js}).then(response => {          
      // Erstellen Sie eine Blob-Instanz mit den zurückgegebenen Binärdaten if(!response) return;
      let blob = neuer Blob([Antwort.Daten], {            
        Typ: „application/vnd.openxmlformats-officedocument.spreadsheetml.sheet“, 
      }) // für .xlsx-Dateien          
      // Dateipfad über URL.createObjectURL generieren let url = window.URL.createObjectURL(blob) 
      Konsole.log("url==========",URL)        
      // Ein Tag erstellen let ele = document.createElement("a")          
      ele.style.display = "keine"          
      // Setze das href-Attribut auf den Dateipfad und das Download-Attribut auf den Dateinamen ele.href = url          
      ele.download = dieser.name          
      // Füge der Seite das a-Tag hinzu und simuliere einen Klick document.querySelectorAll("body")[0].appendChild(ele)          
      ele.klick()          
      // Entferne das A-Tag ele.remove()        
    });
  }, 

Bildbeschreibung hier einfügen

(3) Zusätzlich: Herunterladen von binären Stream-Bildern

 // Binäre Stream-Bilddatei herunterladen downLoadImg() {
     axios({
        Methode: 'get',
        URL: `http://localhost:9527/download/img`,
        Antworttyp: "Array-Puffer",
        Parameter: {
          ID: 12
        }
      }).dann(res => {
        var src = "data:image/jpg;base64," + btoa(neues Uint8Array(res.data).reduce((data, byte) => data + String.fromCharCode(byte), ''))
       // this.srcImg = src // Bildanzeige var a = document.createElement('a')
        a.href = src
        a.download = "2.jpg"
        ein.Klick()
        a.entfernen()
      })
    } 

bild.png

Damit ist dieser Artikel über die Front-End-Vue+Express-Implementierung von Beispielen zum Hoch- und Herunterladen von Dateien abgeschlossen. Weitere verwandte Inhalte zum Hoch- und Herunterladen von Dateien mit Vue Express finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung von Vue+Axios+Node+Express zum Realisieren des Datei-Uploads (Upload des Benutzer-Avatars)

<<:  Detaillierte Erklärung des Unterschieds zwischen Cellspacing und Cellpadding in der Tabelle

>>:  Einführung in die Leistungsoptimierung von MySQL-Datenbanken

Artikel empfehlen

So installieren Sie MySQL 5.7 manuell auf CentOS 7.4

MySQL-Datenbanken werden häufig verwendet, insbes...

Beispiel eines Befehls zur Linux-Hardwarekonfiguration

Hardware-Ansichtsbefehle System # uname -a # Kern...

So prüfen Sie, ob Daten vorhanden sind, bevor Sie sie in MySQL einfügen

Geschäftsszenario: Der Besuchsstatus des Besucher...

Docker-Batch starten und alle Container schließen

Im Docker Starten Sie alle Containerbefehle Docke...

Grundlegende Verwendung von benutzerdefinierten Anweisungen in Vue

Inhaltsverzeichnis Vorwort Text 1. Globale Regist...

Detaillierte Erklärung von JavaScript Reduce

Inhaltsverzeichnis Karte Filter manche jeder Inde...

So erstellen Sie einen Nginx-Server mit Docker

Betriebsumgebung: MAC Docker-Version: Docker vers...

Ein umfassendes Verständnis der funktionalen Komponenten von Vue.js

Inhaltsverzeichnis Vorwort Funktionale React-Komp...

Mehrere Möglichkeiten zum Generieren eindeutiger IDs in JavaScript

Mögliche Lösungen 1. Math.random generiert Zufall...

Einrichten eines Proxyservers mit nginx

Nginx kann seine Reverse-Proxy-Funktion zum Imple...

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

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

Mehrere Möglichkeiten zur Implementierung der Vererbung in JavaScript

Inhaltsverzeichnis Strukturelle Vererbung (implem...