2011-01-09 3 views
2

Je récupère environ 1500 images URL et je veux stocker ces images dans le répertoire de documents de l'iPhone en une seule fois. s'il vous plaît suggérer une approche pour le faire ...Enregistrement d'images dans le répertoire de documents

grâce

+0

Je posterai rarement mes questions ici .... il me a également été informé plus tôt ... Je sais que cela semble absurde, mais s'il vous plaît me dire comment accepter? – devaditya

+0

Cliquez sur la coche verte. – Paul

+0

Cliquez sur la coche blanche – user2189388

Répondre

3

méthode pour télécharger toutes les URL et d'écrire dans un seul fichier:

 - (BOOL) downloadFilefromCDN :(NSString*)filename { 

     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://example.com/getlinks.php"]]]; 
     [request setHTTPMethod:@"GET"]; 

     NSError *err = nil; 
     NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&err]; 
     if (err != nil) { return FALSE; } // Download error 

     NSArray *searchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *path = [[searchPath objectAtIndex:0] stringByAppendingString:[NSString stringWithFormat:@"/%@",filename]]; 
    if ([data writeToFile:path atomically:YES] != FALSE) { 
     return TRUE; 
    } else { 
     return FALSE; // Error 
    } 

    } 

Vous devez écrire un script qui renvoie une réponse, y compris la 1400 liens de sorte que vous pouvez l'écrire dans ce fichier.

Méthode pour télécharger toutes les images données par un NSArray * dans le répertoire de documents.

- (id) downloadFilefromCDN :(NSString*)filename { 

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://example.com/%@",filename]]]; 
    [request setHTTPMethod:@"GET"]; 

    NSError *err = nil; 
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&err]; 
    if (err != nil) { return FALSE; } 

    return data; 

} 

- (NSArray*) downloadFilesfromCDN :(NSArray*)filenames { 

    NSMutableArray *mfiles = [[NSMutableArray alloc] init]; 

    BOOL error = FALSE; 

    for (NSString* filename in filenames) { 
     NSArray *searchPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *path = [[searchPath objectAtIndex:0] stringByAppendingString:[NSString stringWithFormat:@"/%@",filename]]; 
      id file = [self downloadFilefromCDN:filename]; 
      if ([file isKindOfClass:[NSData class]]) { 
     if ([(NSData*)file writeToFile:path atomically:YES] != FALSE) { 
      [mfiles addObject:path]; 
     } else { 
      error = TRUE; // Writing of file failed 
     } 
      } else { 
        error = TRUE; // Download failed 
      } 
    } 

    if (error) { 
      // Handle error 
    } 

    [filenames release]; 

    return [NSArray arrayWithArray:mfiles]; 
} 

Note: Vous devez lire les noms de fichiers purs dans un NSArray. Si vous avez des origines différentes changent

[NSString stringWithFormat:@"http://example.com/%@",filename] 

à

[NSString stringWithFormat:@"%@",filename] 

et lire les chemins complets (http://example.com/file1.png,http://example.com/file2.png) dans un NSArray.

Terminé. J'espère que ça va aider.

Désolé pour tant d'édition: S

+0

Cela fonctionne mais cela prend beaucoup de temps .... on pourrait simplement utiliser ce UIImage * image = [[UIImage alloc] initWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString: @ "http: // www .example.com/images/logo.png "]]]; – devaditya

+0

Cela dépend de ce que vous voulez faire. Si vous voulez télécharger les fichiers et en obtenir une liste complète et les lire dans UIImages, alors ma méthode est parfaite. Si vous connaissez tous les chemins et que vous voulez seulement les lire dans UIImages, c'est parfait. – Paul

Questions connexes