Мы пытаемся загрузить видеофайлы из мобильного приложения для мобильного телефона на веб-сервер. В iPhone все работает отлично, но на Android данные отправляются в кусках, и наше серверное приложение (php) не справляется с этим.
//phonegap var options = FileUploadOptions(); options.chunkedMode = true; //default
Мы попробовали превратить chunkedMode в false. Это работает с меньшими файлами с помощью любых видео за 1 МБ, когда телефон Android вылетает из строя. (по этой причине они по умолчанию меняют chunkMode).
Наш вопрос заключается в том, как читать загруженные данные куска, используя php? Есть ли параметр в Apache, который должен быть включен для чтения этих данных?
Нет никакой разницы между чтением фрагментированных данных на стороне сервера и не-chunked. это именно то, как телефон отправляет данные (в кусках 8192 байта или как один поток).
В Интернете есть много болтовней этой функции, и лично я нашел, что решение для всей файловой системы было немного шелушится, особенно в больших файлах (например, видеофайлах).
Некоторые люди сообщают, что это происходит в файлах размером больше 4.8mb, на моем телефоне Android это происходит вокруг знака 8mb.
Когда мое приложение загружает файлы и нет прикрепленного файла (это то, что происходит в сценарии с ошибкой соединения 3), я регистрирую его, поэтому я могу видеть телефоны, которые имеют проблемы. это происходит и с iphones (некоторые модели).
Если вы посмотрите на журналы Android, когда это произойдет, вы также можете увидеть исключение из памяти.
Как это вам поможет? это не так, но, надеюсь, это помогает объяснить, в чем проблема. К сожалению, мы ничего не можем с этим поделать – помимо внесения изменений в исходный код телефона и повторного написания метода filetransfer!
Из интереса, по телефону у вас возникают проблемы, вы можете загружать массивные файлы, используя, скажем, facebook, без проблем? Однако это приложение загружает файлы, безусловно, способ, которым следует делать телефонные звонки.
Я также испытал эту проблему. Файл загружается отлично в iOS, поэтому сервер обрабатывает chunkedMode, но на Android fileupload возвращает «3» для ошибки соединения. Я пробовал решение здесь: Phonegap: FileTransfer.upload () не работает на Android , но не повезло.
Это закончилось проблемой веб-сервера. Apache должен быть настроен для поддержки режима chunked. Также обратите внимание, что по умолчанию NGNIX не имеет поддержки режима chunked, вам нужно будет установить модуль http://wiki.nginx.org/HttpChunkinModule
Еще одно странное наблюдение. Я загрузил 50 Мбайт видеофайла в неправильный URL. Это никуда не годилось, но Android запустил несколько колес и запустил обратный вызов. Нет ошибки 3 и без сбоев. Как только я исправил опечатку и отправил на правильный URL-адрес, я получил ошибку 3.