这是this question的延续,在对那里提出的建议取得一些进展之后。
我有一个Typo3表格,大约有这个标记:
<form enctype="multipart/form-data" method="post" name="form" id="general" action="index.php?id=328">
<ul class="inline-textbox">
<li>
<input type="text" id="first_name" name="tx_applicationformgeneral[form][name]" value="" placeholder="Name *">
</li>
</ul>
<div class="dropzone-previews">
</div>
<input class="button" type="submit" name="tx_applicationformgeneral[mySubmit]" value="Submit">
</form>
提交表单时,如果没有上传文件,则POST数据包含此代码段:
------WebKitFormBoundarySq0AkJrSAe1kmAOu
Content-Disposition: form-data; name="tx_applicationformgeneral[form][files][]"; filename=""
Content-Type: application/octet-stream
这是上传文件时的POST数据:
------WebKitFormBoundaryrEmFA8jYcHY56WAB
Content-Disposition: form-data; name="tx_applicationformgeneral[form][files][]"; filename="DSC01413_01.JPG"
Content-Type: image/jpeg
我通过向表单元素添加类dropzone
并传递这些初始化选项,将表单转换为Dropzone:
Dropzone.options.general = {
paramName: "tx_applicationformgeneral[form][files][]", // The name that will be used to transfer the file
autoProcessQueue: false,
uploadMultiple: true,
parallelUploads: 100,
maxFiles: 100,
addRemoveLinks: true,
// The setting up of the dropzone
init: function() {
var myDropzone = this;
console.log("Dropzone init");
// First change the button to actually tell Dropzone to process the queue.
this.element.querySelector("button[type=submit]").addEventListener("click", function(e) {
// Make sure that the form isn't actually being sent.
e.preventDefault();
e.stopPropagation();
myDropzone.processQueue();
});
}
};
这似乎可以初始化Dropzone:我可以将文件拖放到表单上,并显示预览。但是当我点击“提交”时,根本没有发送文件上传字段数据。 POST标题中没有任何内容标题为“tx_applicationformgeneral [form] [files] []”或任何变体。尽管所有其他字段都包含在内,但POST数据完全没有。如果我将paramName重命名为
,情况仍然如此 paramName: "tx_applicationformgeneral[form][files]"
因为文件上传没有收到任何内容,所以至少需要一个空字段时,我会在后端遇到一个很难看的Typo3错误而且没有任何处理过。
我猜Dropzone将此字段插入POST数据时出现问题。我原以为如果问题是paramName是错误的,那么数据将在POST数据中以不正确的名称显示,我仍然会看到后端错误。相反,根本没有文件上传数据。
任何人都可以建议可能发生的事情吗?
更新
抓住了我的一个错误:当我的表单使用输入[type =“submit”]时,我的目标是按钮[type =“submit”]。尚未修复,但已经发展到新的&amp;有趣的失败。
答案 0 :(得分:0)
因为我使用了错误的选择器来提交按钮,所以没有触发Dropzone队列处理。我的目标是按钮[type =“submit”],当我的表单使用输入[type =“submit”]时。