我有一个应用程序,下载的图像将以本地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"];
仍然无法正常工作。
我该如何解决这个问题?
答案 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)
}