我在网上浏览了几篇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的片段):
public function executeBasicMenu(sfWebRequest $request) {
if ($request->isMethod('post')) {
print_r_tree($_FILES);
}
}
我已经完成了所有的设置,以便在submit上正确地触发executeBasicMenu,但是$_FILES总是返回一个空数组。
备注:
任何帮助都是非常感谢的!
发布于 2016-03-11 17:59:00
终于发现了我的错误!
在我的代码中,我在按钮单击时提交了表单:
<button id="file_submit_btn" type="submit" form='basic_menu_dropzone' value="submit">SUBMIT</button>
但我也试图在相同的按钮单击上调用processQueue()。但是,表单将在文件发送之前提交,这样PHP端就不会收到任何文件。
我还不正确地实例化了我的下拉区域实例-我应该包括一个parallelUploads字段,以便我可以一次上传多个文件。
因此,使用我的新更新的代码,一切正常工作,我可以得到一个处理我的文件在PHP方面!
解决方案
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="button" form='basic_menu_dropzone' value="submit">SUBMIT</button>
JS
jQuery(document).ready(function($) {
Dropzone.autoDiscover = false;
var dropzone = new Dropzone('#basic_menu_dropzone', {
paramName: 'files',
addRemoveLinks: true,
uploadMultiple: true,
autoProcessQueue: false,
parallelUploads: 10
});
$('#file_submit_btn').click(function() {
dropzone.processQueue();
});
});
PHP
public function executeBasicMenu(sfWebRequest $request) {
foreach($_FILES['files']['name'] as $index => $tmpName) {
error_log($tmpName);
}
}
希望这对其他人也有帮助!
https://stackoverflow.com/questions/35903257
复制相似问题