Сохранение файла на устройстве пользователя, где веб-просмотр может его увидеть - PullRequest
0 голосов
/ 13 июля 2011

У меня есть гибридное (Objective C + HTML) приложение, и я хотел бы иметь возможность периодически сохранять удаленный файл (изображения и CSS) на устройстве пользователя, но таким образом, чтобы он мог загружаться браузером в пределахэкземпляр webview в том же приложении.

Я не думаю, что возможно сохранить файлы в самом комплекте ресурсов (хотя в симуляторе вы можете), поэтому я предполагаю, что мне придется сохранить файл в другом месте.Но я не уверен, какой путь использовать, где HTML-документ все еще может получить к нему доступ.

В принципе, я хотел бы сделать что-то вроде этого:

    NSURL* url = [NSURL URLWithString:@"http://myserver.com/August.png"];
    NSString* filePath = @"[?????]/MonthlyImage.png";
    NSData* data = [NSData dataWithContentsOfURL:url];
    if (data)
    {
        NSError* error;
        if ([data writeToFile:filePath options:NSDataWritingAtomic error:&error])
        {
            NSLog(@"Wrote");
        }
        if (error != nil) 
        {
            NSLog(@"ERROR: %@", [error description]);
        }
    }

Тогда в моем веб-просмотреЯ хотел бы иметь возможность загрузить изображение следующим образом:

<img src="[??????]/MonthlyImage.png" />

Какие значения я могу использовать вместо ??????, который будет работать?Это вообще возможно?

1 Ответ

1 голос
/ 13 июля 2011

Сохранение в комплекте запрещено, поскольку не разрешено изменять двоичный файл приложения.

Вы можете попытаться сохранить файл в папке с документами, а затем извлечь его оттуда. Важным моментом, чтобы заставить его работать, является также указание baseURL при создании UIWebVIew.

Вы можете получить каталог документов следующим образом:

NSString *documentsDirectory = nil;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                     NSUserDomainMask, YES);
if ([paths count] > 0) {
    documentsDirectory = [paths objectAtIndex:0];
}

Затем вы сохраняете там свой файл, и когда вы хотите загрузить его в ваш UIWebView, выполните:

    [_label loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:documentsDirectory]];

Теперь <img src="MonthlyImage.png" /> будет искать png в вашем каталоге документов.

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