fbpx
León Desarrollo - Programación WordPress
Perro programando

Recibir un archivo en una solicitud POST en Express.js en Node.js


Para recibir un archivo en una solicitud POST en Express.js en Node.js, puedes utilizar la biblioteca multer. Multer es una biblioteca de middleware que facilita la carga de archivos en aplicaciones Express. A continuación, te mostraré cómo configurar Express.js para recibir archivos en una solicitud POST:

  1. Instala multer: Asegúrate de tener multer instalado en tu proyecto. Si aún no lo tienes instalado, ejecuta el siguiente comando en la terminal:
   npm install multer
  1. Configura multer en tu aplicación Express: En tu archivo de configuración de Express (por ejemplo, app.js o index.js), configura multer para manejar las solicitudes POST con archivos adjuntos. Aquí tienes un ejemplo de cómo hacerlo:
   const express = require('express');
   const multer = require('multer');
   const app = express();
   const port = 3000;

   // Configura Multer
   const storage = multer.diskStorage({
     destination: (req, file, cb) => {
       cb(null, 'uploads/'); // Directorio donde se guardarán los archivos
     },
     filename: (req, file, cb) => {
       cb(null, Date.now() + '-' + file.originalname); // Nombre del archivo en el servidor
     },
   });

   const upload = multer({ storage: storage });

   // Ruta para manejar la solicitud POST con un archivo
   app.post('/upload', upload.single('archivo'), (req, res) => {
     const archivo = req.file;
     if (!archivo) {
       return res.status(400).json({ mensaje: 'No se recibió ningún archivo' });
     }
     res.json({ mensaje: 'Archivo recibido con éxito', archivo });
   });

   // Inicia el servidor
   app.listen(port, () => {
     console.log(`Servidor en ejecución en http://localhost:${port}`);
   });

En el código anterior, configuramos multer para que almacene los archivos en el directorio «uploads/» y les dé un nombre único basado en la marca de tiempo. Luego, creamos una ruta POST (/upload) que utiliza el middleware upload.single('archivo') para procesar la solicitud POST y guardar el archivo en el servidor con el nombre especificado en el atributo name del campo de archivo en el formulario HTML ('archivo' en este ejemplo).

  1. Crea un formulario HTML: En tu cliente, asegúrate de crear un formulario HTML que permita a los usuarios cargar archivos. El formulario debe incluir un campo de entrada de tipo file con el mismo nombre que especificaste en upload.single(). Por ejemplo:
   <form action="/upload" method="POST" enctype="multipart/form-data">
     <input type="file" name="archivo">
     <input type="submit" value="Subir Archivo">
   </form>

El atributo enctype="multipart/form-data" es esencial para enviar archivos en el formulario.

  1. Maneja la solicitud POST: Cuando el usuario envía el formulario, la solicitud POST se enviará a la ruta /upload, donde Express.js utilizará multer para procesar el archivo y almacenarlo en el directorio especificado.
  2. Respuesta del Servidor: El servidor responderá con un JSON que contiene información sobre el archivo cargado, como su nombre y ubicación en el servidor.
  3. Almacenamiento de Archivos: Los archivos cargados se almacenarán en el directorio especificado en multer. En este ejemplo, se guardarán en la carpeta «uploads/» en el directorio del proyecto.

Esta es una manera básica de recibir archivos en una solicitud POST en Express.js utilizando multer. Puedes personalizar la configuración de multer según tus necesidades específicas, como limitar el tipo de archivo o establecer un límite de tamaño.

Suscríbete

Si quieres estar al día con las novedades de este sitio te recomiendo que te suscribas.

Comentarios

Deja un comentario


2018 animaciones animación Aranda array atributos añade base de datos buscar categoría css curso diseño Duero emprendimiento fiduero guía imagen imagenes inauguracion instalar Isilla javascript linux local mac node.js pagina pagina web php post problemas producto red servicio servidor solución split sql sql server stock string windows woocommerce wordpress