¿Cómo manejar la carga de archivos en Node.js?

La carga de archivos se puede hacer fácilmente usando Formidable. Formidable es un módulo que podemos instalar en el directorio de nuestro proyecto escribiendo el comando

npm install formidable

Enfoque: tenemos que configurar un servidor usando el módulo HTTPS, crear un formulario que se use para cargar archivos, guardar el archivo cargado en una ubicación temporal usando el módulo Formidable y finalmente mover ese archivo a nuestra carpeta de proyecto usando el sistema de archivos Módulo.

Paso 1: requiere HTTP, Formidable y módulo de sistema de archivos

const http = require('http');
const formidable = require('formidable');
const fs = require('fs');

Paso 2: Cree un formulario para cargar archivos

http.createServer((req, res) => {
 res.writeHead(200, {'Content-Type': 'text/html'});
 res.write('<form action="fileupload" 
     method="post" enctype="multipart/form-data">');
 res.write('<input type="file" name="filetoupload"><br>');
 res.write('<input type="submit">');
 res.write('</form>');
 return res.end();
}).listen(8080);

Paso 3: Sube el archivo a la carpeta temporal usando el Módulo Formidable

Tenemos que crear una variable para manejar los datos del formulario entrante, luego analizaremos los datos. También usaremos el parámetro de archivos para obtener los detalles sobre el archivo cargado. Por ejemplo, filepath se usa para obtener la ruta del archivo que está almacenado temporalmente por Formidable Module, originalFilename que se usa para obtener el nombre real del archivo cargado. 

var form = new formidable.IncomingForm()
  
form.parse(req, function (err, fields, files) {
     var tempFilePath = files.filetoupload.filepath;
     var projectFilePath = __dirname + '/uploaded_file/' 
         + files.filetoupload.originalFilename;
});

Paso 4: Mueva el archivo cargado a la carpeta del proyecto

fs.rename(tempFilePath, projectFilePath, function (err) {
   if (err) throw err;
   res.write('File has been successfully uploaded');
   res.end();
});

App.js

const http = require('http');
const formidable = require('formidable');
const fs = require('fs');
  
http.createServer(function (req, res) {
    if (req.url == '/fileupload') {
        var form = new formidable.IncomingForm();
        form.parse(req, function (err, fields, files) {
  
            var tempFilePath = files.filetoupload.filepath;
            var projectFilePath = __dirname + '/uploaded_file/' +
                files.filetoupload.originalFilename;
            fs.rename(tempFilePath, projectFilePath, function (err) {
                if (err) throw err;
                res.write('File has been successfully uploaded');
                res.end();
            });
        });
    }
    else {
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.write(
'<form action="fileupload" method="post" enctype="multipart/form-data">');
        res.write('<input type="file" name="filetoupload"><br>');
        res.write('<input type="submit">');
        res.write('</form>');
        return res.end();
    }
}).listen(8080);

Paso para ejecutar la aplicación: Abra la terminal y escriba el siguiente comando.

node app.js

Producción:

 

Publicación traducida automáticamente

Artículo escrito por devaadi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *