7 Stimmen

Wie man Chunked-Daten aus dem Phone Gap-Datei-Upload in Android liest

Wir versuchen, Videodateien von einer Phonegap-Mobil-App auf einen Webserver hochzuladen. Auf dem iPhone funktioniert alles super, aber auf Android wird die Daten in Stücken gesendet und unsere Server-App (php) kann damit nicht umgehen.

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

Wir haben versucht, chunkedMode auf false zu setzen. Das funktioniert bei kleineren Dateien, aber bei Videos über 1 MB stürzt das Android-Telefon ab. (Das ist der Grund, warum sie chunkMode standardmäßig einschalten).

Unsere Frage ist, wie man die hochgeladenen Stückdaten mit php lesen kann? Gibt es eine Einstellung in Apache, die aktiviert werden muss, um diese Daten zu lesen?

3voto

benpage Punkte 4221

Es gibt keinen Unterschied zwischen dem Lesen von chunked Daten auf der Serverseite im Vergleich zu nicht chunked. Es ist nur die Art und Weise, wie das Telefon die Daten sendet (in Blöcken von 8192 Bytes oder als ein Strom).

Es gibt viel Gesprächsstoff über dieses Feature im Web, und persönlich habe ich die gesamte Lösung für den Dateiupload ein wenig instabil gefunden, insbesondere bei größeren Dateien (zum Beispiel Videodateien).

Einige Leute berichten, dass es bei Dateien passiert, die größer als 4,8 MB sind, auf meinem Android-Telefon passiert es um die 8 MB herum.

Wenn meine App Dateien hochlädt und keine Datei angehängt ist (das passiert in einem Verbindungsfehler 3-Szenario), protokolliere ich es, damit ich die Telefone sehen kann, die Probleme haben. Es passiert auch mit iPhones (bestimmte Modelle).

Wenn Sie sich die Android-Protokolle ansehen, wenn es passiert, sehen Sie möglicherweise auch eine Out-of-Memory-Ausnahme.

Wie hilft Ihnen das? Eigentlich nicht - aber hoffentlich hilft es zu erklären, worin das Problem besteht. Leider können wir nicht viel dagegen tun - abgesehen davon, dass wir zum Quellcode von PhoneGap beitragen und die Filetransfer-Methode neu schreiben!

Zur Information, auf dem Telefon, bei dem Sie Probleme haben, können Sie problemlos massive Dateien hochladen, zum Beispiel mit Facebook, ohne Probleme? Wie auch immer diese App Dateien hochlädt, sollte das sicherlich die Art und Weise sein, wie PhoneGap es machen sollte.

1voto

SilenceKit Punkte 321

Ich habe auch dieses Problem erlebt. Die Datei wird auf iOS erfolgreich hochgeladen, daher handhabt der Server dort den chunkedMode, aber auf Android wird bei der Dateiübertragung ein Verbindungsfehler "3" zurückgegeben. Ich habe die Lösung hier ausprobiert: Phonegap : FileTransfer.upload() fails on Android, aber auch kein Glück gehabt.

1voto

Charles Zhang Punkte 223

Es endete als ein Webserver-Problem. Apache muss so konfiguriert werden, dass er den Chunked-Modus unterstützt. Beachten Sie auch, dass NGNIX standardmäßig keinen Chunked-Modus unterstützt. Sie müssten ein Modul installieren http://wiki.nginx.org/HttpChunkinModule

0voto

SilenceKit Punkte 321

Noch eine merkwürdige Beobachtung. Ich habe eine 50 MB Video-Datei an die falsche URL hochgeladen. Es ist nirgendwohin gegangen, aber Android hat ein paar Minuten lang gerädert und den Erfolgsrückruf ausgelöst. Kein Fehler 3 und kein Absturz. Als ich den Tippfehler behoben und an die richtige URL gesendet habe, habe ich den Fehler 3 bekommen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X