6
votes

Téléchargement de plusieurs fichiers avec Sails.js 0.10 et skipper à l'aide de Dropzone.js

J'ai un problème avec plusieurs fichiers téléchargés dans My Sails App. J'essaie de mettre en œuvre plusieurs téléchargements de fichier avec Dropzone.js et mon backend est Sails v0.10.0-RC8.

Maintenant, lorsque je télécharge des fichiers via Dropzone, je vois qu'en cas de téléchargement multiple, il envoie les fichiers avec des params distincts dans la demande. Les noms paramètres sont 'Photo [0]' ',' Photo [1] '', 'Photo [2]', ... . Je reçois les fichiers dans le contrôleur comme ceci: xxx

mais lorsqu'il y a plus d'un fichier soumis, la demande est transmise au contrôleur avant que tous les fichiers ne soient analysés et stockés de demande, donc je n'obtiens qu'un seul fichier dans mon contrôleur.

Quelqu'un a-t-il vécu ce problème? Peut-être qu'il n'y a pas de support pour plusieurs paramètres de demande avec différents paramètres de demande dans l'analyseur de Skipper Corps? Parce que lorsque je soumettez plusieurs fichiers à l'intérieur d'un attribut (photo '), tous sont manipulés et transmis au contrôleur.


2 commentaires

Ce code contient-il dans une boucle de quelque sorte? L'argument à req.file est le paramètre que le fichier a été envoyé sous et, dans votre cas, les fichiers sont tous envoyés à l'aide de différents paramètres, il s'agit donc de raisonner que le .upload n'entraînerait qu'un seul fichier étant renvoyé. En fait, je ne sais pas si plusieurs appels à req.file fonctionneront même, mais ils permettent d'abord de savoir si vous essayez ou non.


Oui, il y a une boucle avec tous les noms de fichiers possibles que j'ai


3 Réponses :


8
votes

Ceci devrait fonctionner, à condition que vous ayez une boucle via les noms de paramètres asynchrone, E.G.:

async.map(paramNames, function(file, cb) {

    req.file(file).upload(function (err, files) {

        // save the file, and then:
        return cb(err, files);

    });

}, function doneUploading(err, files) {

       // If any errors occurred, show server error
       if (err) {return res.serverError(err);}
       // Otherwise list files that were uploaded
       return res.json(files);

});

p>i a été en mesure de tester cela avec succès. P> P>


3 commentaires

Hmm ... j'ai fini par utiliser async.eachiesseries comme je fais quelques autres choses après chaque sauvegarde du fichier, et cela a fonctionné pour moi. Merci de rappeler ASYNC;)


Mais comment obtenir des paramètres de fichiers de req. ? (dans ci-dessus ex. PARAMNAMES)


Parfait!, Serviable



1
votes

Cela semble fonctionner correctement pour moi: xxx

Fondamentalement, il n'envoie pas les fichiers ensemble, mais vous pouvez toujours laisser tomber plusieurs fichiers dans la Dropzone. L'arrière-plan est votre téléchargement standard à l'aide de Skipper.


0 commentaires

0
votes

avec Dropzone et Sails.js, vous devez:

  • Ajoutez la définition du nom de fichier dans la configuration Dropzone:

    dropzone.option.mydropzone = { PARAMNAME: "Nom de fichier" }

    • Utilisez cette commande pour récupérer le fichier téléchargé:

      req.file ('nom de fichier'). Téléchargement (fonction (err, téléchargées) {

      });

      UpploadedFiles contient le fichier


0 commentaires