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