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:
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
Konvertiere nach NSData und kopiere und schreibe in den App-Ordner
%Vor%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?
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.
Sie können NSData nicht im Hintergrund hochladen, Sie müssen das Dateiformat hochladen. Sie können es nach dem Verzeichnispfad
erstellenTags und Links ios alassetslibrary background uploading nsurlsession