我遇到了完全相同的问题,发现Varan Sinayee的答案是唯一真正解决了原始问题的答案。这个答案可以简化,所以这里有一个更简单的版本。
步骤如下:
创建一个普通形式(不要忘记方法和 enctype args,因为这不再由 dropzone 处理)。
在里面放一个div(这就是Dropzone附加到它的方式)和(用于更改选项)。class="dropzone"
id="yourDropzoneName"
设置Dropzone的选项,以设置将发布表单和文件的URL,停用autoProcessQueue(因此仅当用户按“提交”时才会发生)并允许多次上传(如果需要)。
将 init 函数设置为使用 Dropzone,而不是单击提交按钮时的默认行为。
仍然在 init 函数中,使用 “sendingmultiple” 事件处理程序在文件上发送表单数据。
瞧!现在,您可以像使用普通表单一样检索数据,以 $_POST 和 $_FILES 格式检索数据(在本例中,这将在上传.php)
断续器
<form action="upload.php" enctype="multipart/form-data" method="POST">
<input type="text" id ="firstname" name ="firstname" />
<input type="text" id ="lastname" name ="lastname" />
<div class="dropzone" id="myDropzone"></div>
<button type="submit" id="submit-all"> upload </button>
</form>
断续器
Dropzone.options.myDropzone= {
url: 'upload.php',
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 5,
maxFiles: 5,
maxFilesize: 1,
acceptedFiles: 'image/*',
addRemoveLinks: true,
init: function() {
dzClosure = this; // Makes sure that 'this' is understood inside the functions below.
// for Dropzone to process the queue (instead of default form behavior):
document.getElementById("submit-all").addEventListener("click", function(e) {
// Make sure that the form isn't actually being sent.
e.preventDefault();
e.stopPropagation();
dzClosure.processQueue();
});
//send all the form data along with the files:
this.on("sendingmultiple", function(data, xhr, formData) {
formData.append("firstname", jQuery("#firstname").val());
formData.append("lastname", jQuery("#lastname").val());
});
}
}