Мы предоставляем возможность отправлять изображения в галерею пользователя.
Хотя обычный метод, который мы использовали, работает просто отлично, некоторые люди загружают несколько файлов, что может занять много времени и раздражает в процессе выбора (по одному за раз).
Я начал писать альтернативный метод с использованием Gears для тех, у кого он есть. В первую очередь цель состоит в том, чтобы заменить выбор файла и предоставить индикатор выполнения для загрузки (который помогает уменьшить разочарование при загрузке нескольких больших файлов).
Я все это сделал.
Я ссылался на код Movie Uploader здесь (http://uploadmovietool.appspot.com/), который демонстрирует загрузку файлов с использованием метода чанков. У меня он загружается правильно, сервер принимает чанки, однако я столкнулся с проблемой, пытаясь обработать входящие данные с PHP.
Каждый чанк - это отдельный запрос к сценарию, и ни одна из данных не регистрируется в обычных входных данных PHP: vars _POST
, _GET
, _FILES
и т. Д. Я, наконец, смог получить данные от сосать $GLOBALS['HTTP_RAW_POST_DATA']
однако даже при добавлении данных в один и тот же файл изображение никогда не завершается. Это покажет части, но что-то всегда не так.
.. При этом ... если есть более простой способ опубликовать файлы в сценарии, но при этом иметь доступ к обновлениям прогресса, я хотел бы услышать это.
Когда я начинал этот проект, я предполагал, что Gears предоставит мне способ сделать многочастную публикацию с файлами, как обычно, и просто даст мне событие с интервалом с информацией о прогрессе. Если это как-то возможно (а я явно пропустил это), пожалуйста, дайте мне знать.
Для ясности: мы осведомлены о том, что HTML5 поддерживает механику прогрессии, и готовы реализовать на ее основе, как только она станет жизнеспособной. :)
Для дальнейшей справки:
Заголовки, которые я отправляю вместе с сообщением (согласно примеру загрузчика фильмов Google):
Request.setRequestHeader( 'Content-Disposition', 'attachment; filename="' + self._fileName + '"' );
Request.setRequestHeader( 'Content-Type', 'application/octet-stream' );
Request.setRequestHeader( 'Content-Range', 'bytes ' + byteRange );
Спасибо всем, кто может помочь.