Angular – Node Express – problème de téléchargement d'image grand

Je travaille sur la gestion des téléchargements de fichiers en utilisant express.js, node et angular. La fonctionnalité de base fonctionne pour les images de petite taille. Alors que j'essaie de télécharger des images plus grandes, j'ai eu une erreur 404. J'utilise le chargement de fichiers angulaires. Voici mes codages de téléchargement de fichier

$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); }); 

C'est mon code express 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}); 

};

Je n'ai posté ici que l'exemple de code. Cela fonctionne bien pour une image de plus petite taille. Mais si je télécharge des images de grande taille, l'itinéraire s'affiche comme message d'erreur 404. J'espère que ce serait un problème de configuration, comme la mémoire, la limite de processus. Je ne sais pas quel est le problème exact.

J'ai essayé de définir la limite dans le script exprès comme

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

Je ne travaille pas pour moi. Et j'ai essayé

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

Malchance. Aidez-moi à résoudre ce problème

Merci d'avance

J'ai essayé de faire passer la tête des fichiers en utilisant Angular, Node et Express moi-même. J'utilise Express v4.1 avec connect-busboy et j'ai le Node suivant, Express Code en collaboration avec le module de téléchargement de fichiers angulaires Daniel Farids.

  SERVER.JS

     Var express = require ('express');  // Serveur Web Express
     Var busboy = require ('connect-busboy');  // middleware pour le téléchargement de formulaire / fichier
     Var path = require ('path');  // utilisé pour le chemin du fichier
     Var fs = require ('fs-extra');  // Système de fichiers - pour la manipulation de fichiers
     Var util = require ('util');         

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

     / * ================================================ ==========
     Créez une route (/ upload) pour gérer la soumission de formulaire
     (Gérer les demandes POST & PUT pour / charger)
     Express v4 Définition de l'itinéraire
     ================================================== ========== * /
     App.route ('/ upload')
     .post (function (req, res, next) {
       Var arr;
       Var fstream;
       Var fileize = 0;
       Req.pipe (req.busboy);

       Req.busboy.on ('fichier', fonction (nom de champ, fichier, nom de fichier, codage, mimetype) {        
         // nom de fichier téléchargé, encodage, type MIME
         Console.log ('File [' + fieldname + ']: nom de fichier:' + filename + ', encodage:' + 
              Encodage + ', type MIME:' + mimetype);

         // taille du fichier téléchargé
         File.on ('data', function (data) {
           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 ("-------------------------");
         });

         / *
         Peupler
         Je collectionne les informations sur les fichiers dans les données lues sur le fichier.  Il peut être plus correct de  
         Lire les données du fichier après que le fichier a été enregistré dans le dossier img, c'est-à-dire après  
         File.pipe (flux) complète la taille du fichier peut être obtenu en utilisant stats.size comme indiqué 
         au dessous de
         * /
         Arr = [{fieldname: fieldname, filename: filename, encoding: encoding, MIMEtype:   
             Mimetype}];

         // Chemin d'accès où l'image sera téléchargée
         Fstream = fs.createWriteStream (__ dirname + '/ img /' + filename);
         // crée un flux inscriptible

         File.pipe (fstream);  // canalise les données de publication dans le fichier

         // flux Terminé - (données écrites) envoyer la réponse postale
         Req.on ('end', function () {
         Res.writeHead (200, {"type de contenu": "texte / h tml"});  // en-tête de réponse HTTP

         //res.end(JSON.stringify(arr));  // Corps de réponse http - envoyer des données de json
       });

       // écriture terminée pour diffuser
       Fstream.on ('finish', function () {
         Console.log ('Écriture terminée!');

         // Obtenir des statistiques de fichier (y compris la taille) pour le fichier enregistré sur le serveur
         Fs.stat (__ dirname + '/ img /' + filename, function (err, stats) {
           Si (erreur)
             Jeter errer;    
         // si un fichier
           If (stats.isFile ()) {
             //console.log("It''sa file & stats.size = "+ JSON.stringify (stats));
             Console.log ("Taille de fichier enregistrée sur le serveur:" + stats.size);    
             Console.log ("-----------------------");
           };
         });
       });

        // Erreur
        Fstream.on ('error', function (err) {
          Console.log (err);
        });
       });  // @ END / .req.busboy
     }) // @ END / POST

Voir [My GitHub] ( https://github.com/mick26/ng_Node-AdvancedFileUpload )

Notez avec express 4.1 beaucoup de middleware intégré dans express 3.x est omise. Vous ne pourrez pas utiliser req.files car cette fonction fait partie d'un middleware tiers appelé 'formidable' qui a été utilisé par un autre middleware appelé 'bodyParser'. Les deux formidables et l'analyseur de corps sont encore disponibles sur NPM, je pense. Au lieu de cela, j'ai utilisé un module npm appelé connect-busboy et transmis les données. Je viens de vérifier le programme et j'ai téléchargé un fichier de> 320M avec succès. J'espère que cela peut vous aider.