Bonjour, Dans cet article, nous verrons comment gérer les téléchargements de fichiers sur un serveur nodejs et les stocker avec les meilleures pratiques. J'utiliserai Apexx Cloud comme service de stockage de fichiers.
npm i express nodemon cors multer @apexxcloud/sdk-node dotenv
Une fois installé, mettez à jour votre package.json pour ajouter le script de démarrage
"scripts":{ "start": "nodemon index.js", // rest of the scripts }
Créez un fichier index.js dans le dossier racine, puis créez un dossier appelé src. Dans le dossier src, créez respectivement les dossiers pour les contrôleurs et les routes. Votre structure de dossiers devrait ressembler à ceci.
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
Connectez-vous au cloud Apexx ou créez un nouveau compte ici
Accédez aux compartiments.
Cliquez sur « Créer un bucket » et donnez un nom unique à votre bucket.
Sélectionnez la région souhaitée
Examiner et créer le bucket
Accédez aux clés API
Cliquez sur "Créer une clé API" et donnez un nom à votre clé
Vérifiez et créez la clé
Copiez votre clé secrète et stockez-la dans un endroit sécurisé.
Ensuite, copiez également votre clé d'accès.
Commençons à écrire notre contrôleur qui gérera la requête dans file.controller.js.
// 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}` }); } };
Nous importons d’abord @apexxcloud/sdk-node et nous créons un objet de stockage en transmettant les informations d’identification. Ensuite, nous créons la fonction appelée uploadFile. Dans la fonction, nous obtenons la clé et la visibilité de req.query et les détails du fichier de req.file
Ensuite, nous utilisons la fonction de téléchargement du SDK apexx cloud pour le télécharger sur apexx cloud. Lors du téléchargement vous pouvez configurer la visibilité du fichier, Il peut être public ou privé, Tous les fichiers sont publics par défaut.
Configurons maintenant les routes dans file.route.js.
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
Ensuite, configurons le fichier index.js.
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}`); });
Ouvrez votre terminal et exécutez :
npm start, si tout s'est bien passé, il devrait enregistrer "Serveur exécuté sur le port :8000".
Nous testerons l'API à l'aide de postman.
Sélectionnez Corps, vérifiez les données du formulaire, ajoutez une clé appelée fichier et définissez le type sur fichier. Téléchargez votre fichier puis cliquez sur envoyer.
Vous devriez obtenir une réponse comme ci-dessous :
{ "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" } }
Indiquant que le fichier a été téléchargé. Accédez à votre tableau de bord Apexx Cloud, puis accédez à votre bucket, vous devriez voir le fichier que vous y avez téléchargé.
Et voilà, vous avez implémenté avec succès les téléchargements de fichiers dans nodejs et le meilleur, c'est qu'Apexx Cloud vous offre des transformations à la volée et un CDN ultra-rapide gratuitement. Pour en savoir plus rendez-vous ici, pour la documentation rendez-vous ici.
Cet article vous a appris avec succès comment gérer les téléchargements de fichiers dans une application nodejs à l'aide d'Apexx Cloud et Multer.
Dans le prochain article, je montrerai comment utiliser AWS S3 pour les téléchargements de fichiers, en attendant Signature - Votre FII
Ne vous souciez plus des téléchargements de fichiers : Inscrivez-vous à Apexx Cloud aujourd'hui, c'est gratuit
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!