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 tenermulterinstalado en tu proyecto. Si aún no lo tienes instalado, ejecuta el siguiente comando en la terminal:
npm install multer
- Configura
multeren tu aplicación Express: En tu archivo de configuración de Express (por ejemplo,app.jsoindex.js), configuramulterpara 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
filecon 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ámulterpara 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