it-swarm.com.de

So hängen Sie Dropzone.js-Uploads an ein Formularelement an

Ich integriere dropzone.js in mein Formular, habe jedoch ein Problem mit dem Hochladen meiner Dateien. Ich habe meine Dropzone eingerichtet und Datei-Uploads befinden sich im Array $ _FILES. Ich möchte file_save_upload aufrufen, um die Dateiverwaltung zu übernehmen, aber gemäß dem Code:

// Make sure there's an upload to process.
if (empty($_FILES['files']['name'][$form_field_name])) {
    return NULL;
}

es sucht nach den Dateien unter $ _FILES ['files'] ['name']. Die dropzone.js lädt meine Dateien in $ _FILES ['file'] ['file'] hoch.

Ich habe keine einfache Möglichkeit gesehen, ein Eingabeelement für dropzone.js anzugeben, in das hochgeladen werden soll. Auf der Seite der Formular-API könnte ich nur die Funktionalität von file_save_upload () nachahmen, aber der gesamte Code ist bereits vorhanden und macht viel, und ich würde es hassen, ihn zu duplizieren.

Vielleicht kann ich das Array $ _FILES ['file'] ['file'] nach $ _FILES ['files'] kopieren und dann file_save_upload () aufrufen? Ich versuche sicherzustellen, dass es einen besseren Weg gibt, bevor ich anfange zu hacken.

5
vintorg

Ich habe jetzt die Dateien unter $ _FILES ['files'].

Mein JS-Code:

(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);

Der Parameter '$ form_field_name' ist jetzt ein numerischer Index, daher erhalte ich nur die Anzahl der $ _FILES ['names'] - Arrays und rufe für jeden file_save_upload () auf.

1
vintorg