我有这个应用程序需要在本地存储webview中显示的图像,并在同一webview中再次显示这些存储的图像。
这是我到目前为止所得到的......
// After download button clicked... Store image from URL locally
NSURL *url = [NSURL URLWithString:myURL];
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];
}
// Get image path from Documents Directory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"filename.png"];
// Display local html page
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"revistasPhotoswipe" ofType:@"html" inDirectory:@"www"]];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[_webView loadRequest:requestObj];
在html文件中只有一个标签来显示图像
<html>
<head></head>
<body><img src='filename.png' /></body>
</html>
使用App Bundle和HTML文件传递Documents Dir的正确方法是什么?另一种方法?
答案 0 :(得分:0)
您无法使用<body><img src='filename.png' /></body>
,因为它引用了本地服务器上不存在的对象。你有几个选择:
<强> 1。的Javascript 强>
页面加载后的几毫秒,您应该告诉您的网页视图评估一个javascript函数。document["pictureIdFromProgam"].src = searchPic.src;
以及使用<img src='throw.imgNotSet' id='pictureIdFromProgam'/>
声明您的图片元素
<强> 2。 String Manipulatoin
另一个(不太理想,但更快)选项是将您的HTML文件编码为NSString并使用替换或%@ s插入img链接
插入:
[NSString stringWithFormat:@"<html><blah blah blah/><img src=%@/>",imagePathAsString];
然后您就可以告诉您的webview加载包含更新的Web内容的nsstring。