5

Я пытаюсь загрузить большой файл 2GB в фоновом режиме, используя NSURLSessionUploadTask. Служба использует многостраничный формат, поэтому, чтобы загрузить его в фоновом режиме, я создаю временный файл с телом запроса, затем я использую uploadTask для планирования загрузки и когда файлы заканчивают загрузку, я удаляю временный файл ,NSURLSession фоновая загрузка огромных файлов

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]; 

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

+0

Вы уверены, что это не что-то простое, как timeoutIntervalForResource, слишком низкое? –

+0

Я не уверен, что это все еще полезно, но я изменил timeIntervalForResource и forRequest на огромное значение и все еще ту же проблему. –

+1

Через 2 года после того, как вы задали вопрос, это был большой промежуток времени! –

ответ

0

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

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

self.configuration.discretionary = NO;

+0

Возможно, не отвечает на вопрос, вы должны быть уверены, и дать факты, которые поддерживают ваш ответ –

+0

извините! это понятно ... это мой первый ответ – vibroto

+0

Это старый вопрос, на самом деле это не актуально сейчас, возможно, это ошибка IOS SDK или ошибка сервера, кто знает. –

Смежные вопросы