我想使用dojox.form.Uploader
小部件来处理通过AJAX上传到服务器的文件。
我包含了所需的定义:
dojo.require('dojox.form.Uploader');
dojo.require('dojox.form.uploader.plugins.HTML5');
我声明性地创建了Uploader
:
<div name="docUpload" multiple="false" type="file" dojoType="dojox.form.Uploader" id="docUpload" label="Upload Doc" uploadOnSelect="true" url="/ajax.php?foo=bar">
<script type="dojo/connect" event="onComplete">
/* ... */
</script>
</div>
uploadOnSelect
似乎以某种方式工作,因为/ajax.php
获取了一个请求,该消息在消息日志中可见。此外,js控制台会在几秒钟后收到COMPLETED
消息。
奇怪的是,$_FILES
中的/ajax.php
数组仍为空。我正在记录以下内容:
syslog(LOG_WARNING, json_encode($_REQUEST));
syslog(LOG_WARNING, json_encode($_FILES));
输出:
12月6日13:27:09 reline httpd2-prefork:{“foo”:“bar”} 12月6日13:27:09 reline httpd2-prefork:[]
我对PHP如何处理上传文件的理解有误吗?或者这是技术问题?
修改
我尝试将小部件包装在多部分表单中但id没有任何效果:
<form method="post" action="/ajax.php?foo=bar" id="docUploadForm" enctype="multipart/form-data">
<div name="docUpload" multiple="false" type="file" dojoType="dojox.form.Uploader" id="docUpload" label="Upload Doc" uploadOnSelect="true">
<script type="dojo/connect" event="onComplete">
/* ... */
</script>
</div>
</form>
日志输出相同:
12月6日16:04:20 reline httpd2-prefork:{“foo”:“bar”} 12月16日16:04:20 reline httpd2-prefork:[]
答案 0 :(得分:1)
这并不是完全回答你的问题,但几个月前我遇到了与dojo文件上传器相同的问题,并决定使用它 - http://valums.com/ajax-upload/ - 它功能非常丰富并完成工作非常好。易于集成。
干杯, 编
答案 1 :(得分:0)
尝试更改
<script type="dojo/connect" event="onComplete">
/* ... */
</script>
到
<script type="dojo/connect" data-dojo-event="onComplete">
/* ... */
</script>