web-dev-qa-db-fra.com

télécharger plusieurs fichiers en une requête Dropzone envoie deux requêtes

J'essaie d'envoyer plusieurs fichiers en une requête à l'aide de DropZone js.

Voici mon code:

Dropzone.autoDiscover = false;

var myDropzone = new Dropzone('#upload-Invoices', {       
    paramName: "files", 
    maxFilesize: 3.0, 
    maxFiles: 4,
    parallelUploads: 10000,
    uploadMultiple: true,
    autoProcessQueue: false
});

$('#btnUpload').on('click', function () {
    myDropzone.processQueue();
});

Manette :

public void FileUpload( IEnumerable<HttpPostedFileBase> file )
{
    // Do Something
}

Vue:

<form action="/Index/FileUpload"
      class="dropzone"
      id="upload-Invoices" data-ajax-method="POST" data-ajax="true">
    <input type="submit" value="Upload File to Server" id="btnUpload">
</form>

Les fichiers sont en cours de réception bien que dans différentes demandes, je souhaite envoyer tous les fichiers en une seule demande, la page Dropzone a une option pour cela bien que cela ne fonctionne pas. Merci d'avance

13
SJMan

Le problème était que j'utilisais un type d'entrée = "submit" qui ferait un autre post par lui-même, en le changeant en un "bouton" fonctionnel.

8
SJMan

vous pouvez utiliser la valeur par défaut de la propriété uploadMultiple false la changer en true 

$(".dropzone").dropzone({
            // autoQueue:false,
            parallelUploads:10,
            uploadMultiple:true,

https://www.dropzonejs.com/#config-uploadMultiple

2
ahmedkandil

La propriété enqueueForUpload est obsolète et vous devriez plutôt utiliser autoProcessQueue. Mon intuition est que, puisque enqueueForUpload n'est plus utilisé et que vous ne définissez pas autoProcessQueue sur false, DropZone.js suppose que vous voulez envoyer chaque fichier, car il est déposé sur le composant. 

Vous devez supprimer enqueueForUpload: false, définir autoProcessQueue: false et après avoir sélectionné (c’est-à-dire supprimé) tous les fichiers à télécharger, appelez la fonction .processQueue(), comme décrit dans documentation .

2
Andrei V

Je voyais également plusieurs POST avec 2 fichiers envoyés en même temps (donc, par exemple, 2 POST séparés pour 4 fichiers au total).

J'ai trouvé la solution ici : croissant parallelUploads. Je crée maintenant la zone de dépôt de la manière suivante:

var myDropzone = new Dropzone('div#dz', {
  url: 'http://httpbin.org/post',
  uploadMultiple: true,
  parallelUploads: 10
});
1
Greg Sadetsky

Je peux voir que c'est un très vieux post, cependant, je vais répondre en espérant que cela pourrait aider quelqu'un.

2 demandes

  1. OPTIONS - pas de fichiers
  2. POST - avec des fichiers

Chrome fera une demande de pré-vol (OPTIONS) pour rechercher des en-têtes CORS. C'est une norme qui suit presque tous les navigateurs les plus récents.

0
Sameer