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: