tutorial programacin principiantes para node libro examples español ejemplos desde cero javascript node.js express hapijs

javascript - programacin - ¿Cómo subir archivos usando nodejs y HAPI?



node js tutorial pdf (3)

Finalmente obtuve la solución para cargar los archivos grandes utilizando HAPI y Gracias a Roman.

Aquí está la solución:

código server.js

server.route({ method: ''POST'', path: ''/api/uploadfiles'', config: { payload:{ maxBytes:209715200, output:''stream'', parse: false }, handler: currentposition.uploadFiles, } });

Código del manejador:

var currentpositionApi = { fs : require(''fs''), multiparty: require(''multiparty''), uploadFiles:function(req,reply){ var form = new currentpositionApi.multiparty.Form(); form.parse(req.payload, function(err, fields, files) { currentpositionApi.fs.readFile(files.upload[0].path,function(err,data){ var newpath = __dirname + "/"+files.upload[0].originalFilename; currentpositionApi.fs.writeFile(newpath,data,function(err){ if(err) console.log(err); else console.log(files) }) }) console.log(files) }); } }

¿Alguien puede decirme cómo cargar archivos usando nodejs y HAPI?

Estoy obteniendo datos binarios dentro del controlador.

Aquí está mi código html:

function sendFormFromHTML(form) { //form = $(".uploadForm").form; var formData = new FormData(form); formData.append(''id'', ''123456''); // alternative to hidden fields var xhr = new XMLHttpRequest(); xhr.open(''POST'', form.action, true); xhr.onload = function(e) { alert(this.responseText) }; xhr.send(formData); return false; } <form method="post" id="uploadForm" action="http://localhost:3000/api/uploadfiles" enctype="multipart/form-data"> <label for="upload">File (Binary):</label> <input type="file" name="upload" class="fileupload" /><br/> <input type="button" class="submit" value="Submit" onclick="sendFormFromHTML(this.form);"/> </form>

Aquí está el código de My Nodejs:

server.route({ method: ''POST'', path: ''/api/uploadfiles'', config: { handler: currentposition.uploadFiles, } }); uploadFiles:function(req,reply){ console.log(req.payload); }


Para los nuevos lectores, hapi ya utiliza multiparty usa pez para manejar solicitudes de publicación multiparte. De la documentación de hapi;

Si la carga útil es ''multipart / form-data'' y el análisis es verdadero, los valores de los campos se presentan como texto mientras que los archivos se proporcionan como flujos. Las secuencias de archivos de una carga ''multipart / form-data'' también tendrán una propiedad que contiene propiedades de nombre de archivo y encabezados.

Ejemplo;

server.route({ method: ''POST'', path: ''/create'', config: { payload:{ maxBytes: 209715200, output:''stream'', parse: true }, handler: function (request, reply) { request.payload["htmlInputName"].pipe(fs.createWriteStream("test")); } });


Puede visitar el código de trabajo en https://github.com/pandeysoni/Hapi-file-upload-download

/* * upload file */ exports.uploadFile = { payload: { maxBytes: 209715200, output: ''stream'', parse: false }, handler: function(requset, reply) { var form = new multiparty.Form(); form.parse(requset.payload, function(err, fields, files) { if (err) return reply(err); else upload(files, reply); }); } }; /* * upload file function */ var upload = function(files, reply) { fs.readFile(files.file[0].path, function(err, data) { checkFileExist(); fs.writeFile(Config.MixInsideFolder + files.file[0].originalFilename, data, function(err) { if (err) return reply(err); else return reply(''File uploaded to: '' + Config.MixInsideFolder + files.file[0].originalFilename); }); }); };