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

Detaillierte Schritte zum Erstellen eines Vue-Scaffolding-Projekts

Vue-Gerüst -> vue.cli Erstellen Sie schnell ei...

Zusammenfassung der MySQL-Entwicklungsstandards und -Nutzungskenntnisse

1. Namenskonventionen 1. Datenbanknamen, Tabellen...

10 Best Practices zum Erstellen und Warten großer Vue.js-Projekte

Inhaltsverzeichnis 1. Nutzen Sie Slots, um Kompon...

Beispielanalyse der Verwendung von GROUP_CONCAT in MySQL

Dieser Artikel beschreibt anhand eines Beispiels ...

So ändern Sie das ursprüngliche Passwort von MySQL auf dem MAC

Problembeschreibung: Ich habe einen Mac gekauft u...

Neue Funktionen in MySQL 8.0 - Einführung in Check Constraints

Inhaltsverzeichnis Vorwort Einschränkungen prüfen...

Erfahrung in der Lösung von Tomcat-Speicherüberlaufproblemen

Vor einiger Zeit habe ich Testern eine Produktver...

Native JS-Drag-and-Drop-Funktion zum Erstellen eines Slider-Beispielcodes

Drag & Drop ist eine gängige Funktion im Fron...

Detaillierte Erläuterung der MySQL 8.0-Wörterbuchtabellenerweiterung

Das Datenwörterbuch in MySQL ist eine der wichtig...