Как читать фрагментированные данные из файла Gap File Upload в Android - PullRequest
7 голосов
/ 03 марта 2012

Мы пытаемся загрузить видеофайлы из мобильного приложения phonegap на веб-сервер. В iPhone все работает отлично, но на Android данные отправляются кусками, и наше серверное приложение (php) не может справиться с этим.

//phonegap 
var options = FileUploadOptions();
options.chunkedMode = true; //default

Мы попытались переключить chunkedMode в false. Это работает с файлами меньшего размера, с любыми видео более 1 Мб, сбои телефона Android. (по этой причине они по умолчанию включают chunkMode).

Наш вопрос, как читать загруженные данные чанка с помощью php? Есть ли в Apache параметр, который необходимо включить для чтения этих данных?

Ответы [ 4 ]

3 голосов
/ 04 марта 2012

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

В сети есть LOT болтовни об этой функции, и лично я обнаружил, что решение по загрузке файлов немного ненадежно, особенно для больших файлов (например, видеофайлов).

Некоторые люди сообщают, что это происходит с файлами размером более 4,8 МБ, на моем телефоне с Android это происходит около 8 МБ.

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

Если вы посмотрите журналы Android, когда это произойдет, вы также можете увидеть исключение нехватки памяти.

Как это вам поможет? на самом деле это не так, но, надеюсь, это поможет объяснить, в чем проблема. К сожалению, мы ничего не можем с этим поделать - кроме внесения вклада в исходный код телефонного зазора и переписывания метода передачи файлов!

Из интереса, на телефоне, с которым у вас проблемы, можете ли вы загружать массивные файлы, например, через Facebook, без проблем? Тем не менее, приложение загружает файлы, и это именно то, что должен делать телефонный разрыв .

1 голос
/ 11 апреля 2012

Это закончилось проблемой веб-сервера.Apache должен быть настроен для поддержки чанкованного режима.Также обратите внимание, что в NGNIX по умолчанию нет поддержки чанкованного режима, вам необходимо установить модуль http://wiki.nginx.org/HttpChunkinModule

1 голос
/ 03 марта 2012

Я также столкнулся с этой проблемой.Файл нормально загружается в iOS, поэтому сервер обрабатывает chunkedMode там, но в Android загрузка файла возвращает «3» в случае ошибки подключения.Я попробовал решение здесь: Phonegap: FileTransfer.upload () не работает на Android , но тоже не повезло.

0 голосов
/ 04 марта 2012

Еще одно странное наблюдение. Я загрузил видеофайл размером 50 МБ по неправильному URL-адресу. Это ни к чему не привело, но Android развернул колеса на несколько минут и вызвал успешный обратный вызов. Нет ошибки 3 и нет сбоя. После того, как я исправил опечатку и отправил ее на правильный URL, я получил ошибку 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...