
Leistungsstarker Node.js Upload-Server aus eigener Entwicklung

Nikola Filipovski
Full-Stack Webentwickler
Server für Bild-Uploads - Sicher, Schnell und Vollständig Anpassbar
Dieses Projekt ist ein maßgeschneiderter Image Upload Server, der sichere, authentifizierte und hoch optimierte Bereitstellung von Nutzerbildern ermöglicht. Er wurde entwickelt, um moderne Multi-Tenant-Anwendungen zu unterstützen, bei denen jedes Unternehmen oder jeder Nutzer isolierte Upload-Rechte, sicheren Speicher und Echtzeit-Transformationen auf Abruf hat.
Hauptfunktionen
- Authentifizierte Uploads mit companyName + Secret-Token.
- Upload-Verarbeitung im Speicher über
multer. - Lossless und lossy Optimierung mit
sharp. - Dynamische Transformationen über URL-Parameter (resize, grayscale, invert, blur, quality, Fit-Modi).
- Automatisches Caching-System für verarbeitete Bilder.
- Immutable Cache Header für maximale Leistung (CDN-ähnliches Verhalten).
- Speicherung pro Unternehmen in isolierten Ordnern.
Technologie-Stack
| Bibliothek / Tool | Zweck |
|---|---|
| Express.js | API-Server und Routing |
| Multer (memoryStorage) | Datei-Uploads direkt aus form-data verarbeiten |
| Sharp | Bildoptimierung & Transformation |
| Node.js FS & FS/Promises | Dateiverwaltung und Verzeichnissteuerung |
| CORS | Cross-Origin-Anfragen für externe Clients unterstützen |
| MySQL (pool.query) | Benutzervalidierung und Upload-Authentifizierung |
Authentifizierungs-Logik
Jeder Upload benötigt den Firmennamen als URL-Parameter und ein passendes uploadServerSecret im Form-Data.
Das Backend prüft die Angaben in der Datenbank:
SELECT companyName, uploadServerSecret
FROM users
WHERE companyName = ?
LIMIT 1;
Nur wenn das Secret übereinstimmt, wird das Bild akzeptiert. Andernfalls wird die Anfrage mit 403 Forbidden abgelehnt.
Upload Ablauf
- Client sendet
multipart/form-datamit dem Schlüsselimage. - Server validiert den Unternehmensbenutzer über MySQL.
- Originaldatei wird mit originaler Dateiendung gespeichert.
- Server protokolliert Upload mit Timestamp, Firmenname und IP-Adresse.
- API liefert eine zugängliche URL, z.B.:
https://server.com/companyName/filename
Dynamische Bildtransformationen
Der Server kann jedes hochgeladene Bild sofort mit URL-Parametern transformieren:
w- Breiteh- Höhef- Fit-Modus (cover, contain, fill, inside, outside)grey- Graustufenintensitätinvert=1- Farben invertierenblur- Gaußscher Weichzeichnerq- Qualitätsstufe
Beispielanfrage:
/company/image.webp?w=400&h=400&f=cover&grey=1&q=90
Automatisches Caching-System
Jede eindeutige Transformation wird gespeichert in:
/uploads/company/cache/
Beim nächsten Abruf der gleichen Parameter liefert der Server sofort die gecachte Datei:
Cache-Control: public, max-age=31536000, immutable
Dies macht den Server sehr schnell, selbst bei großen Bildern oder komplexen Transformationen.
Concurrency-Sicherheit
Das System verwendet eine in-memory Promise-Map, um parallele Anfragen an dieselbe Transformation zu verhindern:
const generating = new Map();
Dies gewährleistet:
- Keine doppelte CPU-Belastung
- Keine beschädigten Cache-Dateien
- Keine Race Conditions
Ordnerstruktur
/uploads
/companyName
original-image.png
image-12345.jpg
/cache
transformed-image.webp
Anwendungsfälle
- Profilbilder
- CMS-Systeme
- Dashboard Uploads
- Portfolio Bildhosting
- Multi-Tenant SaaS Anwendungen
Fazit
Dieser Upload-Server ist leicht, skalierbar, sicher und einfach in Frontend- oder Backend-Anwendungen zu integrieren. Er ersetzt Drittanbieter-Services wie Cloudinary für Projekte, die volle Kontrolle, niedrigere Kosten oder individuelle Logik wünschen.
Zusammenarbeit mit mir
Wenn Sie einen ähnlichen maßgeschneiderten Image Upload Server benötigen oder diesen in Ihr System integrieren möchten, kann ich ihn für Sie entwickeln oder anpassen.
Dieses Projekt teilen:
- Projekt Leistungsstarker Node.js Upload-Server aus eigener Entwicklung auf Facebook teilen
- Projekt Leistungsstarker Node.js Upload-Server aus eigener Entwicklung auf WhatsApp teilen
- Projekt Leistungsstarker Node.js Upload-Server aus eigener Entwicklung auf X teilen
- Projekt Leistungsstarker Node.js Upload-Server aus eigener Entwicklung auf LinkedIn teilen
- Projekt Leistungsstarker Node.js Upload-Server aus eigener Entwicklung auf Reddit teilen