J'ai rencontré un problème étrange. Je charge le fichier à partir d'Internet en utilisant NSURLSession
et NSURLSessionDownloadTask
. Voici le codetotalBytesExpectedToWrite est -1 dans NSURLSessionDownloadTask
NSURLSessionConfiguration *sessionConfiguration =
[NSURLSessionConfiguration backgroundSessionConfiguration:kSessionId];
self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration
delegate:self
delegateQueue:[NSOperationQueue new]];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionDownloadTask *downloadTask = [self.session downloadTaskWithRequest:request];
[downloadTask resume];
Ma classe est déclarée comme NSURLSessionDownloadDelegate
et je reçois bien callbacks. Mais lorsque le système appelle la méthode délégué
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
{
NSLog(@"totalBytesExpectedToWrite: %lld", totalBytesExpectedToWrite);
NSLog(@"%lld", totalBytesWritten);
}
totalBytesExpectedToWrite
toujours égale -1
et je n'ai pas la possibilité de montrer un progrès à l'utilisateur parce que je ne sais pas la taille du fichier de téléchargement.
Pourriez-vous m'indiquer où j'ai fait une erreur?
Il pourrait être un problème de serveur où il n'envoie pas correctement l'en-tête 'Content-Length' . Si vous utilisez la même URL dans votre navigateur, votre navigateur affiche-t-il des progrès corrects? – rmaddy