Как использовать Dojo для загрузки файлов через AJAX? - PullRequest
0 голосов
/ 06 декабря 2011

Я хотел бы использовать виджет 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: []

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Это не совсем ответ на ваш вопрос, но у меня были те же проблемы с загрузчиком файлов dojo пару месяцев назад, и я решил использовать это - http://valums.com/ajax-upload/ - он очень многофункциональный и делаетработа на отличноПростота интеграции.

Cheers, Ed

0 голосов
/ 12 февраля 2012

Попробуйте изменить

<script type="dojo/connect" event="onComplete">
    /* ... */
</script>

до

<script type="dojo/connect" data-dojo-event="onComplete">
    /* ... */
</script>
...