Сохранение изображений в каталог документов - PullRequest
2 голосов
/ 09 января 2011

Я получаю около 1500 URL-адресов изображений и хочу сохранить эти изображения в каталоге документов iphone за один раз ?? пожалуйста, предложите любой подход, чтобы сделать это ...

спасибо

1 Ответ

3 голосов
/ 09 января 2011

Способ загрузки всех URL-адресов и записи в один файл:

     - (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
    }

    }

Вам необходимо написать скрипт, который возвращает ответ, включающий 1400 ссылок, чтобы вы могли записать его в этот файл.

Метод для загрузки всех изображений, переданных NSArray *, в каталог документов.

- (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];
}

Примечание. Вам необходимо прочитать чистые имена файлов в NSArray.Если у вас разные источники, измените

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

на

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

и прочитайте полные пути (http://example.com/file1.png,http://example.com/file2.png) в NSArray.

Готово. Надеюсь, это поможет.

Извините за столь большое редактирование: S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...