Загрузка файлов с помощью Gears и PHP

Мы предоставляем возможность отправлять изображения в галерею пользователя.

Хотя обычный метод, который мы использовали, работает отлично, некоторые люди загружают несколько файлов, что может занять много времени и раздражает в процессе выбора (по одному).

Я начал писать альтернативный метод с помощью 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 );

Спасибо всем, кто может помочь.


person Spot    schedule 31.01.2010    source источник


Ответы (1)


Судя по вашему описанию, PHP может неправильно записывать файл .. Не знаю почему.

Однако это непростая проблема. Например, Facebook (который, как вы знаете, также использует PHP) решил написать плагин NPAPI для реализации этой функции.

http://www.facebook.com/note.php?note_id=178492968919

Кроме того, вы можете рассмотреть менее переносимый вариант написания расширений для браузера. Это довольно просто сделать в Firefox и Chrome, и это даст вам хороший временный вариант для пользователей этих браузеров.

person Kris Walker    schedule 01.02.2010
comment
Спасибо за ответ. К сожалению, мы не готовы просить наших пользователей установить плагин только для нашей собственности. Я бы предпочел использовать флэш-загрузчик, а не плагин. - person Spot; 01.02.2010