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:
- Instala
multer
: Asegúrate de tenermulter
instalado en tu proyecto. Si aún no lo tienes instalado, ejecuta el siguiente comando en la terminal:
npm install multer
- Configura
multer
en tu aplicación Express: En tu archivo de configuración de Express (por ejemplo,app.js
oindex.js
), configuramulter
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).
- 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 enupload.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.
- 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. - 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.
- 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.
Deja un comentario