Фоновая загрузка NSURLSession огромных файлов

Я пытаюсь загрузить большой файл размером 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];

Так что проблема только для больших файлов, для маленьких файлов закачка выполняется. Кто-нибудь еще сталкивался с такой же проблемой?


person Mihai Georgescu    schedule 30.10.2014    source источник
comment
Вы уверены, что это не что-то простое, например, слишком низкое значение timeoutIntervalForResource?   -  person Ryan Heitner    schedule 22.06.2015
comment
Я не уверен, что это все еще полезно, но я изменил timeIntervalForResource и forRequest на огромное значение и все еще та же проблема.   -  person Mihai Georgescu    schedule 31.10.2016
comment
2 года после того, как вы задали вопрос, это был большой промежуток времени!!!   -  person Ryan Heitner    schedule 31.10.2016


Ответы (1)


В соответствии с описанием разработчика Apple для свойства на усмотрение, если файл такой большой , система может ожидать удачного момента, например, соединения WIFI.

Переключите дискреционное свойство на NO и повторите попытку. удачи!

self.configuration.discretionary = NO;
person vibroto    schedule 21.09.2017
comment
Возможно, не отвечает на вопрос, Вы должны быть уверены и привести факты, подтверждающие ваш ответ. - person Nasreddine Galfout; 21.09.2017
comment
Прости! понятно... это мой первый ответ - person vibroto; 21.09.2017
comment
Это старый вопрос, сейчас он не очень актуален, может быть, это была ошибка iOS SDK или ошибка сервера, кто знает. - person Mihai Georgescu; 21.09.2017