web-dev-qa-db-fra.com

Comment attacher des téléchargements Dropzone.js à un élément de formulaire

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.

5
vintorg

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.

1
vintorg