5

Sto tentando di caricare un file di grandi dimensioni 2 GB in background utilizzando NSURLSessionUploadTask. Il servizio utilizza il formato multipart, quindi per caricarlo in background sto creando un file temporaneo con il corpo della richiesta, quindi sto usando un uploadTask per pianificare il caricamento e quando i file finiscono il caricamento sto cancellando il file temporaneo .NSURLSessione in background caricamento di file enormi

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

Con i file più piccoli quindi 1.4 GB l'upload funzionava male, ma quando provo a caricare i file video di 2 GB, il caricamento non riesce. Il server sta restituendo un messaggio di errore che non ho allegato il file.

Sto rifattorizzando il componente di upload da ASIHTTP a NSURLSession se eseguo il caricamento con ASIHTTP funziona anche per file di grandi dimensioni.

Questo è il modo in Creo il mio 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]; 

Quindi il problema è solo per i file di grandi dimensioni, per i piccoli file viene eseguito il caricamento. Qualcun altro ha riscontrato lo stesso problema?

+0

Sei sicuro che non sia qualcosa di semplice come il timeout dell'IntervalForResource che è troppo basso? –

+0

Non sono sicuro che sia ancora utile, ma ho cambiato timeIntervalForResource e forRequest con un valore enorme e lo stesso problema. –

+1

2 anni dopo che hai fatto la domanda, è stato un grande intervallo di tempo !!! –

risposta

0

In base alla descrizione dello sviluppatore Apple per la proprietà discretionary se il file è così grande, il sistema potrebbe essere in attesa di un buon momento come una connessione WIFI.

Passare alla proprietà discrezionale su NO e riprovare. in bocca al lupo!

self.configuration.discretionary = NO;

+0

Forse non risponde alla domanda, Devi essere sicuro, e fornire i dati che supportano la tua risposta –

+0

scusa! è capito ... è la mia prima risposta – vibroto

+0

Questa è una vecchia domanda, non è davvero rilevante ora, forse era un bug dell'SDK iOS o un bug del server, chi lo sa. –

Problemi correlati