J'intègre dropzone.js dans mon formulaire, mais j'ai un problème concernant mes téléchargements de fichiers. J'ai ma zone de dépôt configurée et les téléchargements de fichiers sont dans le tableau $ _FILES. Je veux appeler file_save_upload pour gérer la gestion des fichiers, mais selon le code:
// Make sure there's an upload to process.
if (empty($_FILES['files']['name'][$form_field_name])) {
return NULL;
}
il recherche les fichiers sous $ _FILES ['files'] ['name']. Le dropzone.js télécharge mes fichiers dans $ _FILES ['fichier'] ['fichier'].
Je n'ai pas vu de moyen facile de spécifier un élément d'entrée pour dropzone.js à télécharger. Du côté de l'API Form, je pourrais simplement imiter la fonctionnalité de file_save_upload (), mais tout le code existe déjà et il en fait beaucoup, et je détesterais le dupliquer.
Peut-être que je peux copier le tableau $ _FILES ['file'] ['file'] sur $ _FILES ['files'], puis appeler file_save_upload ()? J'essaie de m'assurer qu'il existe une meilleure façon de le faire avant de commencer le piratage.
J'ai maintenant les fichiers sous $ _FILES ['files'].
Mon code JS:
(function ($) {
Drupal.behaviors.dz = {
attach: function (context, settings) {
Dropzone.options.picsForm = {
paramName: "files",
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 100,
maxFiles: 100,
init: function() {
var dz = this;
// #edit-next is the id of my submit button
this.element.querySelector("#edit-next").addEventListener("click", function(e) {
e.preventDefault();
e.stopPropagation();
dz.processQueue();
});
}
};
}
}
})(jQuery);
Le paramètre '$ form_field_name' est maintenant un index numérique, donc j'obtiens juste le compte du tableau $ _FILES ['names'] et j'appelle file_save_upload () pour chacun.