如何从ios webview读取文档目录中的图像文件

for*_*own 5 html webview ios

我正在下载图像文件并写入文档目录,如下所示:

NSArray   *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString  *documentsDirectory = [paths objectAtIndex:0];

NSString  *objURL = @"http://test.test.com/file/image.png";
NSURL     *objurl = [NSURL URLWithString:objURL];
NSData    *imgData = [NSData dataWithContentsOfURL:objurl];

NSString *imgFile = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"image.png"];
[imgData writeToFile:imgFile atomically:YES];
Run Code Online (Sandbox Code Playgroud)

在我的 webView 中,我从捆绑资源加载了一个 html 文件以在 webView 中使用,但是如何在 html 中使用标签来读取文档目录中的 image.png ?

<html>
<body>
    <img src="../what/is/the/path/to/use/image.png" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Way*_*man 2

您可以使用绝对路径和方案给出该图像的 URL file://

NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)[0];
NSString *filePath = [NSString stringWithFormat:@"file://%@/image.png", documentsDirectory];
Run Code Online (Sandbox Code Playgroud)

然后,您可以运行一些 javascript 来更新src标记,将其更新为新路径:

NSString *javascript = [NSString stringWithFormat:@"var imageElement = document.getElementById('localFile'); imageElement.setAttribute('src', '%@');", filePath];
[self.webView stringByEvaluatingJavaScriptFromString:javascript];
Run Code Online (Sandbox Code Playgroud)

在 HTML 中,路径看起来像这样:

<html>
    <body>
        <img id="localFile" src="file:///var/mobile/Applications/3D7D43E8-FA5E-4B19-B74C-669F7D1F3093/Documents/image.png" />
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)