Я пытаюсь загрузить большой файл размером 2 ГБ в фоновом режиме, используя NSURLSessionUploadTask
. Служба использует составной формат, поэтому, чтобы загрузить его в фоновом режиме, я создаю временный файл с телом запроса, затем я использую uploadTask, чтобы запланировать загрузку, и когда файлы завершают загрузку, я удаляю временный файл .
NSURLSessionUploadTask *uploadTask = [[self backgroundNSURLSession] uploadTaskWithRequest:uploadRequest fromFile:filePath];
[uploadTask resume];
С файлами меньше 1,4 ГБ загрузка работала нормально, но когда я пытаюсь загрузить видеофайлы размером 2 ГБ, загрузка не удалась. Сервер возвращает сообщение об ошибке, что я не прикрепил файл.
Я рефакторинг компонента загрузки из ASIHTTP в NSURLSession, если я делаю загрузку с помощью ASIHTTP, он работает даже для больших файлов.
Вот как я создаю свою NSURLSession:
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];
Так что проблема только для больших файлов, для маленьких файлов закачка выполняется. Кто-нибудь еще сталкивался с такой же проблемой?