2016-03-09 1 views
0

Je voudrais télécharger plusieurs fichiers d'image sur mon serveur. Du côté client, j'utilise dropzone.js. Mon serveur dorsal est sails.js et je voudrais utiliser redoutable afin de mettre à jour le client avec une barre de progression (je suis assez nouveau pour sails.js et node.js)télécharger le fichier avec sails.js dropzone.js et formidable: Demande abandonnée

Ceci est mon contrôleur (écrit avec tapuscrit)

export var upload = function (req: express.Request, res: express.Response, next) { 
 
    
 
    var form = new formidable.IncomingForm(); 
 

 
    form.parse(req, function (err, fields, files) {    
 
    }); 
 

 
    form.on('progress', function (bytesReceived, bytesExpected) { 
 
     // calculating perscent and logging progress message 
 
    }); 
 

 
    form.on('error', function (err) { 
 
     console.error(err); // --> here I get "Request aborted" 
 
    }); 
 

 
    form.on('end', function (fields, files) { 
 
     // here I save files to disk with fs-extra and I 
 
     // send back to client appropriate status 
 
    });  
 
}

Je continue à obtenir 'Demande avortée' dans le gestionnaire d'erreurs. J'ai fait quelques recherches sur stackoverflow et google sans findind une réponse claire. Le problème semble être lié aux données de formulaire en plusieurs parties et au middleware explicite approprié à utiliser pour analyser le corps. Comment puis-je définir mon application sails.js afin de télécharger un fichier en utilisant dropzone.js sur le client et navigue + redoutable sur le serveur?

Toute aide sera grandement apprécié

+0

Je ne suis pas assez familier avec tapuscrit mais habituellement dans 'sails.js', vous passez juste' fn (req, res, suivant) 'dans vos contrôleurs. Je ne suis pas sûr de ce que 'res: express.Response' signifie – Bwaxxlo

+0

Ne vous inquiétez pas. Ils sont supprimés par le compilateur de caractères dactylographiés pendant le processus de construction de sorte que le fichier .js de sortie réel utilisé dans l'application est comme vous le feriez: fn (req, res, next) {....} – TheSoul

+0

Hey, avez-vous trouvé le façon de travailler avec SailsJs et Formidable. Je reçois également le message «Demande annulée». J'ai réalisé la demande faite pour télécharger des fichiers stucks sur l'état Pending, et aussi 'form.progress (...)' ne s'initialise pas. Je pense qu'il peut être 'var form = new formidable.IncomingForm();' est exécuté dans un timing différent et son événement ne correspond pas aux fichiers envoyés. – Leo

Répondre

0

Avec Dropzone et Sails.js, vous devez:

ajouter le definination du nom du fichier dans la configuration dropzone: Dropzone.options.myDropzone = {paramName: " fileName »}

utiliser cette commande pour récupérer le fichier téléchargé. req.file ('filename') télécharger (fonction (err, Uploadedfiles) {

});

Uploadedfiles contient le fichier