Hallo, in diesem Artikel erfahren Sie, wie Sie Datei-Uploads auf einen NodeJS-Server handhaben und mit Best Practices speichern. Ich werde die Apexx-Cloud als unseren Dateispeicherdienst verwenden.
npm i express nodemon cors multer @apexxcloud/sdk-node dotenv
Aktualisieren Sie nach der Installation Ihre package.json, um das Startskript hinzuzufügen
"scripts":{ "start": "nodemon index.js", // rest of the scripts }
Erstellen Sie eine index.js-Datei im Stammordner und erstellen Sie dann einen Ordner namens src. Erstellen Sie im src-Ordner die Ordner für Controller bzw. Routen. Ihre Ordnerstruktur sollte in etwa so aussehen.
project-root/ │ ├── index.js # Entry point of the application ├── package.json # Project metadata and dependencies ├── package-lock.json # Auto-generated dependency tree ├── node_modules/ # Installed dependencies │ └── src/ ├── controllers/ # Contains controller files │ └── file.controller.js │ ├── routes/ # Contains route files │ └── file.route.js
Melden Sie sich bei der Apexx-Cloud an oder erstellen Sie hier ein neues Konto
Navigieren Sie zu den Buckets.
Klicken Sie auf „Bucket erstellen“ und geben Sie einen eindeutigen Namen für Ihren Bucket ein.
Wählen Sie die gewünschte Region aus
Überprüfen und erstellen Sie den Bucket
Navigieren Sie zu API-Schlüsseln
Klicken Sie auf „API-Schlüssel erstellen“ und geben Sie einen Namen für Ihren Schlüssel ein
Überprüfen und erstellen Sie den Schlüssel
Kopieren Sie Ihren geheimen Schlüssel und bewahren Sie ihn an einem sicheren Ort auf.
Dann kopieren Sie auch Ihren Zugangsschlüssel.
Beginnen wir mit dem Schreiben unseres Controllers, der die Anfrage in file.controller.js verarbeitet.
// Setup our apexx cloud sdk const ApexxCloud = require("@apexxcloud/sdk-node"); const storage = new ApexxCloud({ accessKey: process.env.APEXXCLOUD_ACCESS_KEY, secretKey: process.env.APEXXCLOUD_SECRET_KEY, region: process.env.APEXXCLOUD_REGION, bucket: process.env.APEXXCLOUD_BUCKET, }); // Upload file function const uploadFile = async (req, res) => { try { if (!req.file) { return res.status(400).json({ error: "No file provided" }); } const { originalname, filename, size, path, mimetype } = req.file; const { key, visibility } = req.query; const result = await storage.files.upload(req.file.buffer, { key: key || orginalname, visibility: visiblity || "public", contentType: mimetype, }); res.status(200).json(result); } catch (error) { console.log(error); res.status(500).json({ error: `File upload failed: ${error.message}` }); } };
Zuerst importieren wir @apexxcloud/sdk-node und erstellen ein Speicherobjekt, indem wir die Anmeldeinformationen übergeben. Dann erstellen wir die Funktion „uploadFile“. In der Funktion erhalten wir den Schlüssel und die Sichtbarkeit von req.query und Dateidetails von req.file
Dann verwenden wir die Upload-Funktion des Apexx Cloud SDK, um es in die Apexx Cloud hochzuladen. Beim Hochladen können Sie die Sichtbarkeit der Datei konfigurieren. Sie kann öffentlich oder privat sein. Alle Dateien sind standardmäßig öffentlich.
Jetzt können wir die Routen in file.route.js einrichten.
const express = require("express"); const router = express.Router(); const multer = require("multer"); const { uploadFile } = require("../controllers/file.controller") // setup multer const upload = multer({ storage: multer.memoryStorage() }); // setup the route router.post("/upload", upload.single("file"), uploadFile); // export the router module.exports = router
Dann richten wir die Datei index.js ein.
const express = require("express"); const mongoose = require("mongoose"); const dotenv = require("dotenv"); const cors = require("cors"); // load env variables dotenv.config(); // import file route const fileRoute = require("./src/routes/file.route"); // setup express const app = express(); app.use(express.urlencoded({ extended: true, limit: "100mb" })); app.use(express.json({ limit: "100mb" })); app.use(cors()); // setup the file route app.use(fileRoutes); const port = 8000 app.listen(port, () => { console.log(`Server running at port:${port}`); });
Öffnen Sie Ihr Terminal und führen Sie Folgendes aus:
npm start: Wenn alles richtig gelaufen ist, sollte „Server läuft auf Port: 8000“ protokolliert werden.
Wir testen die API mit Postman.
Wählen Sie „Body“ aus, überprüfen Sie die Formulardaten, fügen Sie einen Schlüssel namens „file“ hinzu und legen Sie den Typ auf „file“ fest. Laden Sie Ihre Datei hoch und klicken Sie dann auf Senden.
Sie sollten eine Antwort wie folgt erhalten:
{ "data": { "message": "File uploaded successfully", "key": "file.png", "location": "https://cdn.apexxcloud.com/f/ojGnBqCLkTnI/file", "bucket": "your-bucket-name", "region": "WNAM", "visibility": "private", "size": 14513, "content_type": "image/png" } }
Zeigt an, dass die Datei hochgeladen wurde. Gehen Sie zu Ihrem Apexx Cloud-Dashboard und dann zu Ihrem Bucket. Dort sollten Sie die Datei sehen, die Sie hochgeladen haben.
Und das war's, Sie haben Datei-Uploads erfolgreich in NodeJS implementiert und das Beste daran ist, dass Apexx Cloud Ihnen On-the-Fly-Transformationen und ein superschnelles CDN kostenlos zur Verfügung stellt. Weitere Informationen finden Sie hier. Die Dokumentation finden Sie hier.
In diesem Artikel haben Sie erfolgreich gelernt, wie Sie Datei-Uploads in einer NodeJS-Anwendung mit Apexx Cloud und Multer handhaben.
Im nächsten Artikel werde ich zeigen, wie man AWS S3 für Datei-Uploads verwendet, bis dahin erfolgt die Abmeldung – Ihr FII
Machen Sie sich keine Sorgen über Datei-Uploads: Melden Sie sich noch heute für Apexx Cloud an, es ist kostenlos
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Datei-Uploads in Nodejs: Eine Schritt-für-Schritt-Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!