5

Ich versuche, eine große Datei 2 GB im Hintergrund mit NSURLSessionUploadTask hochladen. Der Dienst verwendet das Multipart-Format. Um es im Hintergrund hochzuladen, erstelle ich eine temporäre Datei mit dem Body der Anfrage, dann benutze ich eine uploadTask, um den Upload zu planen und wenn die Dateien hochgeladen sind, lösche ich die temporäre Datei .NSURLSession Hintergrund Hochladen von großen Dateien

NSURLSessionUploadTask *uploadTask = [[self backgroundNSURLSession] uploadTaskWithRequest:uploadRequest fromFile:filePath]; [uploadTask resume];

Mit Dateien kleiner als 1,4 GB der Upload war in Ordnung, aber wenn ich versuche, Videodateien von 2 GB hochladen, schlägt der Upload. Der Server gibt eine Fehlermeldung zurück, dass ich die Datei nicht angehängt habe.

Ich Refaktorierung der Upload-Komponente von ASIHTTP zu NSURLSession, wenn ich den Upload mit ASIHTTP es funktioniert auch für große Dateien. Diese

ist, wie ich meine NSURLSession erstellen:

if ([NSURLSessionConfiguration respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) { 
     self.configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:appID]; 
    } else { 
     self.configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:appID]; 
    } 
    self.configuration.HTTPMaximumConnectionsPerHost = 1; 
    self.configuration.discretionary = YES; 
    self.configuration.timeoutIntervalForResource = 60*60; 
    self.configuration.timeoutIntervalForRequest = 60*60; 
    backgroundSession = [NSURLSession sessionWithConfiguration:self.configuration delegate:self delegateQueue:nil]; 

Das Problem ist also nur für große Dateien, für kleine Dateien, die Upload ausgeführt. Ist jemand anderes auf dasselbe Problem gestoßen?

+0

Sind Sie sicher, dass es nicht so einfach ist wie die timeoutIntervalForResource viel zu niedrig ist? –

+0

Ich bin mir nicht sicher, ob das immer noch nützlich ist, aber ich habe timeIntervalForResource und forRequest zu einem großen Wert geändert und immer noch das gleiche Problem. –

+1

2 Jahre nachdem du die Frage gestellt hast, war das ein großes Zeitintervall !!! –

Antwort

0

Nach Apple Entwickler Beschreibung für Eigenschaft discretionary Wenn die Datei so groß ist, könnte das System auf einen guten Moment wie eine WIFI-Verbindung warten.

Optionale Eigenschaft auf NEIN umschalten und erneut versuchen. Viel Glück!

self.configuration.discretionary = NEIN;

+0

Vielleicht beantwortet nicht die Frage, Sie müssen sicher sein, und geben Sie Fakten, die Ihre Antwort unterstützen –

+0

Entschuldigung! Es versteht sich ... es ist meine erste Antwort – vibroto

+0

Dies ist eine alte Frage, ist nicht wirklich relevant jetzt, vielleicht war es ein iOS SDK-Bug oder ein Server-Bug, wer weiß. –