28 votes

Comment télécharger et enregistrer un fichier localement sur iOS en utilisant l'objectif C ?

Je suis nouveau en Objective-C et je veux télécharger un fichier depuis le web (s'il a été modifié sur le serveur web) et le sauvegarder localement pour qu'il puisse être utilisé par mon application.

Je veux surtout mettre en œuvre ce que wget --timestamp <url> fait.

128voto

Henning Points 1289

Je ne suis pas sûr de ce qu'est wget, mais pour récupérer un fichier sur le web et le stocker localement, vous pouvez utiliser NSData :

NSString *stringURL = @"http://www.somewhere.com/thefile.png";
NSURL  *url = [NSURL URLWithString:stringURL];
NSData *urlData = [NSData dataWithContentsOfURL:url];
if ( urlData )
{
  NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString  *documentsDirectory = [paths objectAtIndex:0];  

  NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.png"];
  [urlData writeToFile:filePath atomically:YES];
}

6voto

pixelfreak Points 7385

Je pense qu'un moyen beaucoup plus simple est d'utiliser ASIHTTPRequest. Trois lignes de code peuvent accomplir cela :

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:@"/path/to/my_file.txt"];
[request startSynchronous];

Lien vers la référence

UPDATE : Je dois mentionner que ASIHTTPRequest n'est plus maintenu. L'auteur a spécifiquement conseillé aux gens d'utiliser d'autres frameworks à la place, tels que AFNetworking

4voto

Anh Do Points 4677

Jetez un coup d'œil à cette question : Téléchargement d'un fichier volumineux . L'OP inclut la source d'une classe DownloadHelper qui pourrait être utilisée dans votre cas.

1voto

exalted Points 556

Il y a quelque temps, j'ai mis en place une bibliothèque de "gestionnaire de téléchargement" facile à utiliser : PTDownloadManager . Vous pouvez tenter votre chance !

0voto

johnson Points 11

Il y a tellement de façons de faire :

  1. NSURL

  2. ASIHTTP

  3. libcurl

  4. easyget une version commerciale dotée de fonctionnalités puissantes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X