In diesem Tutorial zeigen wir Ihnen, wie Sie mit Express.js einen Server erstellen, der Datei-Uploads verarbeitet und dynamische Bildverarbeitung wie Größenänderung, Formatkonvertierung und Qualitätsanpassungen mit Sharp.
VoraussetzungenNode.js und npm installiert haben. Wir werden in diesem Tutorial die folgenden Bibliotheken verwenden:
mkdir image-upload-server cd image-upload-server npm init -y
Sie können alle Abhängigkeiten installieren, indem Sie Folgendes ausführen:
npm install express multer sharp cors
mkdir original-image transform-image
Express.js ein. Erstellen Sie eine Datei namens index.js im Stammverzeichnis Ihres Projekts und fügen Sie den folgenden Code hinzu, um den Server einzurichten:
const express = require('express'); const cors = require('cors'); const multer = require('multer'); const path = require('path'); const sharp = require('sharp'); const fs = require('fs'); const app = express(); // Middleware for CORS and JSON parsing app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true }));
Multer verwenden, um Datei-Uploads abzuwickeln. Mit Multer können wir hochgeladene Dateien in einem angegebenen Verzeichnis speichern.
Fügen Sie den folgenden Code hinzu, umMulter zu konfigurieren:
// Configure multer for file storage const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'original-image'); // Ensure the 'original-image' directory exists }, filename: function (req, file, cb) { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); } }); const upload = multer({ storage: storage });
POST-Endpunkt für Datei-Uploads. Der Benutzer sendet eine Datei an den Server und der Server speichert die Datei im Originalbildverzeichnis.
Fügen Sie den folgenden Code hinzu, um den Datei-Upload zu verarbeiten:
// File upload endpoint app.post('/upload', upload.single('file'), (req, res) => { const file = req.file; if (!file) { return res.status(400).send({ message: 'Please select a file.' }); } const url = `http://localhost:3000/${file.filename}`; // Store file path with original filename as the key db.set(file.filename, file.path); res.json({ message: 'File uploaded successfully.', url: url }); });
Jetzt erstellen wir einen GET-Endpunkt, um die hochgeladenen Dateien bereitzustellen. Wenn Abfrageparameter angegeben werden (z. B. Größenänderung, Formatkonvertierung), verarbeitet der Server das Bild entsprechend.
Fügen Sie den folgenden Code hinzu, um die hochgeladenen Dateien bereitzustellen:
mkdir image-upload-server cd image-upload-server npm init -y
Dieser Endpunkt:
Die Sharp-Bibliothek ermöglicht es uns, verschiedene Transformationen an den Bildern durchzuführen, wie z. B. Größenänderung, Formatkonvertierung und Qualitätsanpassungen.
Fügen Sie die Funktion „processImage“ hinzu, die diese Transformationen verarbeitet:
npm install express multer sharp cors
Diese Funktion:
Zuletzt starten Sie den Server, indem Sie den folgenden Code hinzufügen:
mkdir original-image transform-image
Dadurch wird der Server auf Port 3000 gestartet.
Um die Funktion zum Hochladen von Dateien mit Postman zu testen, führen Sie die folgenden Schritte aus:
Starten Sie Postman auf Ihrem Computer. Wenn Sie Postman nicht installiert haben, können Sie es hier herunterladen.
Beispielantwort:
mkdir image-upload-server cd image-upload-server npm init -y
Jetzt testen wir das Abrufen des Bildes mit Transformationen mit dem Browser.
Um das Bild abzurufen, öffnen Sie einfach Ihren Browser und navigieren Sie zu der URL, die Sie nach dem Hochladen der Datei erhalten haben. Wenn die Antwort-URL beispielsweise lautete:
npm install express multer sharp cors
Geben Sie einfach diese URL in die Adressleiste Ihres Browsers ein und drücken Sie die Eingabetaste. Das Originalbild sollte angezeigt werden.
Jetzt testen wir dynamische Bildtransformationen, indem wir Abfrageparameter für Größenänderung, Formatkonvertierung und Qualitätsanpassung anhängen.
Fügen Sie in Ihrem Browser Abfrageparameter an die Bild-URL hinzu, um Transformationen zu testen. Hier einige Beispiele:
mkdir original-image transform-image
const express = require('express'); const cors = require('cors'); const multer = require('multer'); const path = require('path'); const sharp = require('sharp'); const fs = require('fs'); const app = express(); // Middleware for CORS and JSON parsing app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true }));
// Configure multer for file storage const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'original-image'); // Ensure the 'original-image' directory exists }, filename: function (req, file, cb) { const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9); cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); } }); const upload = multer({ storage: storage });
// File upload endpoint app.post('/upload', upload.single('file'), (req, res) => { const file = req.file; if (!file) { return res.status(400).send({ message: 'Please select a file.' }); } const url = `http://localhost:3000/${file.filename}`; // Store file path with original filename as the key db.set(file.filename, file.path); res.json({ message: 'File uploaded successfully.', url: url }); });
Der Browser zeigt das verarbeitete Bild an und Sie können bestätigen, ob die Transformation korrekt angewendet wurde.
Dieser Bild-Upload- und -Verarbeitungsserver bietet eine robuste Lösung für die Handhabung von Bild-Uploads, -Transformationen und -Abrufen. Mithilfe von Multer für die Dateiverwaltung und Sharp für die Bildverarbeitung werden Größenänderung, Formatkonvertierung und Qualitätsanpassungen über Abfrageparameter unterstützt. Das System speichert verarbeitete Bilder effizient zwischen, um die Leistung zu optimieren und eine schnelle und reaktionsschnelle Bildbereitstellung zu gewährleisten. Dieser Ansatz vereinfacht die Bildverwaltung für Anwendungen, die dynamische Bildtransformationen erfordern, und macht es zu einem vielseitigen Werkzeug für Entwickler.
Das obige ist der detaillierte Inhalt vonErstellen einer Express-Web-App für Datei-Uploads und dynamische Bildverarbeitung im Handumdrehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!