将文件保存到webview可以看到的用户设备

时间:2011-07-13 14:36:05

标签: iphone ios uiwebview

我有一个混合(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 个答案:

答案 0 :(得分:1)

不允许保存到捆绑包,因为不允许修改应用程序二进制文件。

您可以尝试将文件存储在文档文件夹中,然后从那里检索它。要使其有效,重要的是在创建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。