Dropzone.jsをフォームに統合していますが、ファイルのアップロードに関して問題があります。ドロップゾーンを設定しました。ファイルのアップロードは$ _FILES配列にあります。 file_save_upload を呼び出してファイル管理を処理したいのですが、コードごとに:
// Make sure there's an upload to process.
if (empty($_FILES['files']['name'][$form_field_name])) {
return NULL;
}
$ _FILES ['files'] ['name']の下のファイルを探します。 dropzone.jsはファイルを$ _FILES ['file'] ['file']にアップロードします。
Dropzone.jsがアップロードするinput要素を指定する簡単な方法を見たことがない。フォームAPI側では、file_save_upload()の機能を模倣するだけで済みますが、すべてのコードが既に存在し、多くのことを実行します。それを複製するのは嫌です。
$ _FILES ['file'] ['file']配列を$ _FILES ['files']にコピーして、file_save_upload()を呼び出すことができますか?私はハッキングを始める前にそれを行うためのより良い方法があることを確認しようとしています。
$ _FILES ['files']の下にファイルがあります。
私の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);
'$ form_field_name'パラメータは数値インデックスになりました。そのため、$ _ FILES ['names']配列の数を取得し、それぞれについてfile_save_upload()を呼び出します。