wkwebview - 将文档目录中的图像显示到本地html中

时间:2017-12-15 03:57:36

标签: html ios11 wkwebview

我有一个应用程序,下载的图像将以本地HTML显示。我仍在使用Objective-C,因为此应用已有4年历史。 首次启动应用程序时,它将下载图像和其他动态内容(我检查,它位于Documents / content /目录中)。

我有这段代码来获取内容位置:

NSString *contentBasePath = [app.contentManager contentBasePath];

我得到了:

  

的/ var /移动/容器/数据/应用/ 4AFD30E2-F4F7-405A-9FE9-1857EEC11CC7 /文件/内容

然后我有一些html页面会动态调用下载的图像:

<div class="box-round benefits-thumbnail" style="background-image:url('file://{{../contentBasePath}}/{{filename}}');"></div>

我查了一下,{{../contentBasePath}}会得到:

  

的/ var /移动/容器/数据/应用/ 4AFD30E2-F4F7-405A-9FE9-1857EEC11CC7 /文件/内容

{{filename}}将获得

example.jpg

这都是正确的。

所有这些都适用于uiwebview。但是我需要使用wkwebview,图片没有显示出来。

我试过了:

<div class="box-round benefits-thumbnail" style="background-image:url('{{../contentBasePath}}/{{filename}}');"></div>

它仍然无效。

我用Google搜索并阅读,似乎wkwebview不允许绝对路径。所以我试着按照这个建议:

[_webConfig.preferences  setValue:@YES forKey:@"allowFileAccessFromFileURLs"];

仍然无法正常工作。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

似乎这是WebKit的限制。作为解决方法,您可以将HTML内容写入文档目录中的文件并使用[webView loadFileURL:fileUrl allowingReadAccessToURL:dirUrl]

加载它

链接到文档:https://developer.apple.com/documentation/webkit/wkwebview/1414973-loadfileurl

答案 1 :(得分:0)

文件必须在文档目录中。

我实现了以下操作来检索文档:

    let documentDirUrl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
    let fileNameWithExtension = "IMG_0002.PNG"
    let indexFileUrl = documentDirUrl.appendingPathComponent(fileNameWithExtension)
    if FileManager.default.fileExists(atPath: indexFileUrl.path) {
        webView.loadFileURL(indexFileUrl, allowingReadAccessTo: documentDirUrl)
    }