Я хотел бы использовать виджет 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));
Вывод:
6 декабря 13:27:09 reline httpd2-prefork: {"foo": "bar"} 6 дек. 13:27:09 reline httpd2-prefork: []
Неужели мое понимание того, как PHP обрабатывает загруженный файл, неверно?Или это техническая проблема?
РЕДАКТИРОВАТЬ
Я пытался обернуть виджет в составную форму, но идентификатор не дал никакого эффекта:
<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>
Вывод журнала такой же:
6 декабря 16:04:20 reline httpd2-prefork: {"foo": "bar"} 6 декабря 16:04:20переведите httpd2-prefork: []