【发布时间】:2016-06-24 12:23:39
【问题描述】:
我在网上搜索了几篇 SO 和博客文章,但找不到有用的东西。
我正在尝试设置一个简单的 HTML 拖放表单,用户可以通过 DropzoneJS 一次上传多个文件。
HTML:
<form action='<?php echo url_for("@menu_basic_menu"); ?>' method="post" enctype="multipart/form-data" class="dropzone" id="basic_menu_dropzone"></form>
<button id="file_submit_btn" type="submit" form='basic_menu_dropzone' value="submit">SUBMIT</button>
Javascript:
jQuery(document).ready(function($) {
Dropzone.autoDiscover = false;
var dropzone = new Dropzone('#basic_menu_dropzone', {
paramName: 'files',
addRemoveLinks: true,
uploadMultiple: true,
autoProcessQueue: false,
});
$('#file_submit_btn').click(function() {
dropzone.processQueue();
});
});
在这里你会注意到我还设置了一个提交按钮,这样我们只在提交时开始文件的上传过程
PHP(actions.class.php的sn-p):
public function executeBasicMenu(sfWebRequest $request) {
if ($request->isMethod('post')) {
print_r_tree($_FILES);
}
}
我已经完成所有设置,以便在提交时正确触发 executeBasicMenu,但 $_FILES 总是返回一个空数组。
注意事项:
- 如果我用常规输入 type='file' 标记替换 dropzone 表单,那么一切正常,所以我的直觉告诉我,我的 dropzone 配置在某处有问题。
- 我已经浏览了 dropzone.js 源代码,当它即将在第 1386 行发送数据时,它看起来是正确的:xhr.send(formData), formData 为空。
非常感谢任何帮助!
【问题讨论】:
-
问:
echo url_for("@menu_basic_menu");是否为您提供了正确的 URL?"/file-upload"之类的东西? -
是的。我也确认了这一点,因为结果动作被触发了。另外,就像我在问题中提到的那样,为普通 标签切换 dropzone 表单可以正常工作(即触发该操作,并且 $_FILE 返回一个属性数组)。
标签: javascript php upload symfony-1.4 dropzone.js