Je télécharge des données très volumineuses à partir d'un serveur avec la classe NSURLConnection. Comment puis-je implémenter une fonction de pause afin que je puisse reprendre le téléchargement?Reprendre la fonctionnalité de téléchargement dans NSURLConnection
Répondre
Vous ne pouvez pas mettre en pause, mais vous pouvez annuler une connexion, puis en créer une nouvelle pour reprendre l'ancienne. Toutefois, le serveur auquel vous vous connectez doit prendre en charge l'en-tête Range. Réglez-le sur "bytes = size_already_downloaded-", et il devrait reprendre là où vous l'avez annulé.
très bonne réponse –
Pour reprendre le téléchargement et obtenir le reste du fichier que vous pouvez définir la valeur Range
en-tête de requête HTTP en faisant quelque chose comme ceci:
- (void)downloadFromUrl:(NSURL*)url toFilePath:(NSString *)filePath {
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
if (!request) {
NSLog(@"Error creating request");
// Do something
}
[request setHTTPMethod:@"GET"];
// Add header to existing file
NSFileManager *fm = [NSFileManager defaultManager];
if([fm fileExistsAtPath:filePath]) {
NSError *error = nil;
NSDictionary * fileProp = [fm attributesOfItemAtPath:filePath error:&error];
if (error) {
NSLog(@"Error: %@", [error localizedDescription]);
// Do something
} else {
// Set header to resume
long long fileSize = [[fileProp objectForKey:@"NSFileSize"]longLongValue];
NSString *range = @"bytes=";
range = [[range stringByAppendingString:[[NSNumber numberWithLongLong:fileSize] stringValue]] stringByAppendingString:@"-"];
[request setValue:range forHTTPHeaderField:@"Range"];
}
}
NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (!connection) {
NSLog(@"Connection failed.");
// Do something
}
}
vous pouvez également utiliser - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
pour vérifier si le fichier existant est entièrement téléchargé en vérifiant la taille attendue: [response expectedContentLength];
. Si les tailles correspondent, vous voulez probablement annuler la connexion.
Finaly a trouvé une solution de travail. Merci beaucoup :-) – byJeevan
- 1. reprendre le téléchargement cassé
- 2. Reprendre le contrôle du fichier de téléchargement
- 3. Téléchargement de plusieurs fichiers étranges - NSURLConnection
- 4. Recadrage de la photo après la fonctionnalité de téléchargement
- 5. Le téléchargement de fichier avec la possibilité de reprendre (de préférence dans Ruby on Rails)
- 6. Fonctionnalité de téléchargement d'images avec aperçu
- 7. téléchargement complet avec NSURLConnection GET dans iPhone app
- 8. iphone sdk: mise en veille de NSURLConnection?
- 9. comment faire le téléchargement de différents fichiers d'un nsurlconnection
- 10. HttpWebRequest ou WebRequest - Reprendre Télécharger ASP.NET
- 11. NSURLConnection et multitâche dans iOS
- 12. Gestion de la mémoire pour NSURLConnection
- 13. NSURLConnection joue
- 14. en utilisant nsurlconnection calculer le temps restant pour le téléchargement
- 15. CKEditor avec CKFinder - désactiver FileBrowser, Keep fonctionnalité de téléchargement
- 16. Styling avec CSS et fonctionnalité du bouton de téléchargement
- 17. Fonctionnalité de téléchargement FCKeditor ne fonctionne pas, pas d'erreur
- 18. Fuites dans NSURLConnection
- 19. Plusieurs délégués NSURLConnection dans Objective-C
- 20. App Crashing dans NSURLConnection
- 21. NSURLConnection dans NSOperation
- 22. Erreur ou confusion dans la documentation Apple SDK sur NSURLConnection?
- 23. NSURLConnection problèmes de fuite
- 24. NSURL de NSURLConnection?
- 25. NSURLConnection et la fuite de mémoire NSData
- 26. tuiles pour CATiledLayer avec NSURLConnection
- 27. NSURLConnection n'appelle pas la méthode didRecieveData
- 28. Lire xml de NSURLConnection
- 29. Quelle est la meilleure solution pour télécharger et télécharger un fichier simple: NSURLConnection ou ASIHTTP?
- 30. NSURLConnection Crashing
avez-vous réussi à implémenter la fonction de pause? –