Maison > interface Web > js tutoriel > Comment implémenter les téléchargements de fichiers dans Nodejs : un guide étape par étape

Comment implémenter les téléchargements de fichiers dans Nodejs : un guide étape par étape

Patricia Arquette
Libérer: 2025-01-03 01:36:39
original
866 Les gens l'ont consulté

Introduction

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.

Installer les paquets

npm i express nodemon cors multer @apexxcloud/sdk-node dotenv
Copier après la connexion

Une fois installé, mettez à jour votre package.json pour ajouter le script de démarrage

"scripts":{
 "start": "nodemon index.js",
 // rest of the scripts
}
Copier après la connexion

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

Copier après la connexion

Configurer le cloud Apexx

  1. Connectez-vous au cloud Apexx ou créez un nouveau compte ici

  2. Accédez aux compartiments.

  3. Cliquez sur « Créer un bucket » et donnez un nom unique à votre bucket.

  4. Sélectionnez la région souhaitée

  5. Examiner et créer le bucket

  6. Accédez aux clés API

  7. Cliquez sur "Créer une clé API" et donnez un nom à votre clé

  8. Vérifiez et créez la clé

  9. Copiez votre clé secrète et stockez-la dans un endroit sécurisé.

  10. Ensuite, copiez également votre clé d'accès.

Commençons par écrire du code

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}` });
  }
};
Copier après la connexion

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
Copier après la connexion

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}`);
});

Copier après la connexion

Ouvrez votre terminal et exécutez :

npm start, si tout s'est bien passé, il devrait enregistrer "Serveur exécuté sur le port :8000".

Tester l'API

Nous testerons l'API à l'aide de postman.

How to implement File uploads in Nodejs: A step by step guide

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"
    }
}
Copier après la connexion

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.

Conclusion

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal