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
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.
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,
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 .
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
});
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
- OPTIONS - pas de fichiers
- 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.