NSURLSession und Stream-Upload im Hintergrund

9

Ich habe Probleme mit NSURLSession , um Fotos von der Asset-Bibliothek auf den Server hochzuladen.

Zunächst unterstützt NSURLSession keinen Streaming-Upload. Ich habe eine Ausnahme, wenn ich versuche, das zu benutzen:

%Vor%

Dies ist eine Ausnahme:

%Vor%

Das ist wirklich seltsam, weil das Handbuch von Apple keine Informationen darüber enthält, nur uploadTaskWithRequest:fromFile: für Hintergrundsession zu verwenden. Was wäre, wenn ich wirklich große Videodateien aus der Asset-Bibliothek hochladen möchte? Sollte ich es vorher in meinem tmp-Verzeichnis speichern?

Sieht so aus, als ob der einzige Grund darin besteht, uploadTaskWithRequest:fromFile: trotzdem zu benutzen, oder? Aber dann habe ich eine Frage, wie der Server erfährt, welcher Teil der Datei gerade hochgeladen wird, wenn der Upload-Prozess unterbrochen wurde und begonnen hat, den nächsten Teil im Hintergrund hochzuladen?

Soll ich etwas dafür schaffen? Zuvor habe ich Content-Range für die URL-Anfrage verwendet, wenn ich einen Teil der Datei hochladen wollte, die zuvor gestartet wurde. Jetzt kann ich das nicht - ich muss eine URL-Anfrage erstellen, bevor ich eine Upload-Aufgabe erstelle, und sieht so aus, als ob NSURLSession sowas automatisch für mich tun müsste?

Tut jemand so etwas schon? Danke

    
gN0Me 14.11.2013, 10:02
quelle

4 Antworten

1

Konvertiere nach NSData und kopiere und schreibe in den App-Ordner

%Vor%     
Mustaque Ahmed 15.11.2013 18:39
quelle
0

Momentan gibt es keine andere Möglichkeit, als das Bild im lokalen Dateisystem oder im temporären Verzeichnis zu speichern.

Nach dem Code stellen Sie sicher, dass Ihre Daten nicht mit Exif-Tags verloren gehen. (ALAsset = & gt; NSData)

%Vor%

Der Upload-Task in der Hintergrundsitzung unterstützt den Beendigungshandler nicht. Wir sollten gehen.,

%Vor%

Ich bezweifle, wie erhalten wir die Antwort Header oder Körper im Fall, wenn wir Hintergrundsitzung & amp; uploadtask mit Anfrage mit Datei?

    
Jay 27.01.2014 11:21
quelle
0

Eine saubere Lösung besteht darin, eine NSOperation zu erstellen, die die Datei mithilfe von NStream aus der Asset-Bibliothek in Ihren temporären Ordner kopiert, damit Sie bei einer großen Datei keinen Absturz haben. Wenn die Operation abgeschlossen ist, planen Sie eine Upload dieser temporären Datei, wenn der Upload beendet ist, löschen Sie ihn.

In meinem Fall muss ich die Datei im mehrteiligen Format senden, so dass die temporäre Datei erstellt werden muss, aber ich habe ein Problem beim Hochladen großer Dateien, mehr als 2 GB, Beispielfilme über 20 Minuten.

    
Mihai Georgescu 27.11.2014 08:21
quelle
0

Sie können NSData nicht im Hintergrund hochladen, Sie müssen das Dateiformat hochladen. Sie können es nach dem Verzeichnispfad

erstellen     
Parkhya developer 13.05.2015 13:05
quelle