Angular – Node Express – Problema de carga de imágenes grandes

Estoy trabajando en el manejo de cargas de archivos usando Express.js, node y angular. La funcionalidad básica que trabaja para imágenes de pequeño tamaño. Mientras trato de subir imágenes más grandes, tengo error 404. Yo uso el archivo de archivo angular. Esta es mi encoding de carga de archivos

$upload.upload({ url: '/products/image/upload', data: { PRODUCT_ID : productId, }, file: file }).progress(function(evt){ console.log('percent: ' + parseInt(100.0 * evt.loaded / evt.total, 10)); }).success(function(data){ console.log(data); }); 

Este es mi codigo expreso js

 app.post('/products/image/upload', controller.uploadProductImage); exports.uploadProductImage = function(req, res){ var fileObject = req.files.file; var newPath = ''; var newFilename = 'sample.png'; newPath = './uploads/products/' + newFilename; fs.rename(fileObject.path, newPath, function(err) { if (err) throw err; fs.unlink(fileObject.path , function() { if (err) throw err; }); }); res.json({success:true}); 

};

He publicado aquí solo el código de muestra. Funciona bien para imágenes de tamaño más pequeño. Pero si subo imágenes de gran tamaño, la ruta se muestra como un mensaje de error 404. Espero que sea un problema de configuración, como la memoria, el límite del proceso. No estoy seguro de cuál es el problema exacto.

He intentado establecer el límite en el script expreso como

 app.use(express.limit('2mb')); 

No me funciona. Y lo intenté

 node --max-old-space-size=2000 app.js 

Mala suerte. porfavor ayudame a resolver este problema

Gracias por adelantado

He estado tratando de orientarme acerca de las cargas de archivos utilizando Angular, Node y Express. Estoy usando Express v4.1 con connect-busboy y tengo el siguiente Nodo, Express Code trabajando con el módulo de carga de archivos angulares de Daniel Farids.

  SERVIDOR.JS

     var express = require ('express');  // Express Web Server
     var busboy = require ('connect-busboy');  // middleware para cargar formulario / archivo
     var ruta = requiere ('ruta');  // usado para la ruta del archivo
     var fs = require ('fs-extra');  // Sistema de archivos - para la manipulación de archivos
     var util = require ('util');         

     var app = express ();
     app.use (busboy ());
     app.use (express.static (path.join (__ dirname, 'public')));

     / * ================================================ ==========
     Crear una ruta (/ subir) para manejar el envío del formulario
     (manejar solicitudes POST y PUT para / subir)
     Express v4 definición de ruta
     ================================================== ========== * /
     app.route ('/ upload')
     .post (función (req, res, siguiente) {
       var arr;
       var fstream;
       var filesize = 0;
       tubo de req. (req.busboy);

       req.busboy.on ('archivo', función (nombre de campo, archivo, nombre de archivo, encoding, tipo MIME) {        
         // nombre del archivo cargado, encoding, tipo MIME
         console.log ('Archivo [' + fieldname + ']: nombre de archivo:' + nombre de archivo + ', encoding:' + 
              encoding + ', tipo MIME:' + mimetype);

         // tamaño del archivo cargado
         file.on ('datos', función (datos) {
           console.log ('File [' + fieldname + '] got' + data.length + 'bytes');
           fileSize = data.length;
           console.log ("fileSize =" + fileSize);
         });

         file.on ('end', function () {
           console.log ('File [' + fieldname + '] ENDed');
           console.log ("-------------------------");
         });

         / *
         rellenar matriz
         Estoy recostackndo información del archivo en datos leídos sobre el archivo.  Puede ser más correcto  
         lea los datos del archivo después de que el archivo se haya guardado en la carpeta img, es decir, después de  
         file.pipe (flujo) completa el tamaño del archivo que se puede obtener usando stats.size como se muestra 
         abajo
         * /
         arr = [{fieldname: fieldname, filename: filename, encoding: encoding, MIMEtype:   
             tipo MIME}];

         // Ruta donde se cargará la imagen
         fstream = fs.createWriteStream (__ dirname + '/ img /' + filename);
         // crear un flujo de escritura

         archivo.pipe (fstream);  // canaliza los datos del post al archivo

         // flujo finalizado - (datos escritos) enviar la respuesta de la publicación
         req.on ('end', function () {
         res.writeHead (200, {"content-type": "text / h tml"});  // encabezado de respuesta http

         //res.end(JSON.stringify(arr));  // cuerpo de respuesta http - enviar datos json
       });

       // Terminé de escribir para transmitir.
       fstream.on ('terminar', función () {
         console.log ('¡Escritura terminada!');

         // Obtenga estadísticas del archivo (incluido el tamaño) para el archivo guardado en el servidor
         fs.stat (__ dirname + '/ img /' + filename, función (err, stats) {
           si
             tirar err    
         // si es un archivo
           if (stats.isFile ()) {
             //console.log("It\'sa file & stats.size = "+ JSON.stringify (stats));
             console.log ("Tamaño de archivo guardado en el servidor:" + stats.size);    
             console.log ("-----------------------");
           };
         });
       });

        // error
        fstream.on ('error', función (err) {
          console.log (err);
        });
       });  // @ END / .req.busboy
     }) // @ END / POST

Ver [Mi GitHub] ( https://github.com/mick26/ng_Node-AdvancedFileUpload )

Nota con Express 4.1 se omite mucho del middleware incorporado en Express 3.x. No podrá usar req.files ya que esta función es parte de un middleware de terceros llamado ‘formidable’ que fue utilizado por otro middleware llamado ‘bodyParser’. Tanto formidable como body-parser todavía están disponibles en NPM, creo. En su lugar, utilicé un módulo npm llamado connect-busboy y transmití los datos. Acabo de verificar el progtwig y subí un archivo de> 320M con éxito. Espero que esto le pueda ayudar.