2 Stimmen

Fortschritt beim Hochladen einer Datei vom iPhone

Ich lade eine Datei von einem iPhone auf einen Server mit einem HTTP POST hoch und überwache den Fortschritt in NSURLConnection's connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite. Das Problem ist, dass der Fortschritt nicht gleichmäßig ist. Der Anfang der Datei vergeht sehr schnell in vier 32K-Blöcken, dann geht es langsamer mit kleineren Blöcken weiter, bis die Gesamtzahl erreicht ist. Dann wird didSendBodyData für einige Zeit nicht mehr aufgerufen, bevor die Antwort endlich zurückkommt. Der Fortschrittsbalken, der durch den Code gesteuert wird, läuft also schnell (fast augenblicklich) für die ersten 128K, dann langsam und bleibt dann für eine lange Zeit bei 100% "hängen".

Einige Untersuchungen deuten darauf hin, dass die ersten vier Chunks sofort in den "Kernel-Puffer" des Telefons wandern, und von da an sickern die Daten in den Puffer, während sie am anderen Ende wieder herausrieseln. Der Fortschritt erreicht 100 %, wenn die letzten Daten eintrudeln, bleibt dann aber stehen, während sich der Puffer auf der Rückseite leert.

Ich würde es vorziehen, den Fortschritt auf der Grundlage der Daten anzuzeigen, die aus dem Backend kommen, oder überhaupt keinen Puffer zu haben. Weiß jemand, wie ich das machen kann?

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