2017-09-05 34 views
1

我在我的ViewController中有一个WkWebView,我用webview加载本地html。该代码是这样的:WebView插入本地图像到html无法成功?

guard let path = Bundle.main.url(forResource: "editor", withExtension: "html") else { 
     return 
    } 
webView.load(URLRequest(url: path)) 

1:我从photoLibrary选择一个图像,然后我把它保存到文件的目录。

private func fileName() -> String { 
    let date = Date() 
    let formatter = DateFormatter() 
    formatter.dateFormat = "[email protected]" 
    return "/" + formatter.string(from: date) + ".png" 
} 

func saveImage(_ image: UIImage) { 
    guard let imageData = UIImageJPEGRepresentation(image, 1.0) else { 
     return 
    } 
    let directory = NSHomeDirectory().appending("/Documents") 
    let path = directory.appending(fileName()) 
    let fileManager = FileManager.default 
    do { 
     try fileManager.createDirectory(atPath: directory, withIntermediateDirectories: true, attributes: nil) 
     fileManager.createFile(atPath: path, contents: imageData, attributes: nil) 
    } catch { 
     SHLog("saveImage: \(error)") 
    } 
} 

2:我拿来图像路径然后我用web视图的方法,以插入图像。

func evaluateJs(_ imagePath: String) { 
    webView.evaluateJavaScript("insertImage('\(imagePath)')") { (response, error) in 
    } 
} 

insertImage()是一个从本地js文件中获取方法,它可以将图像插入到html中。

如果我使用本地的ImagePath,我无法插入图片的HTML。但是,当我使用真实的网址时,它可以工作。我不知道原因,任何人都可以帮助我。谢谢。

+0

嗨,@Jack龙,你看着办吧?我有同样的问题。 Thx〜 – Jerome

+0

将html文件和图像保存在同一个文件夹下面,它将解决这个问题。你可以在这里看到[链接](http://blog.csdn.net/longshihua/article/details/78008594) –

回答

0

你的问题很可能是由WKWebViews安全政策造成不允许你访问该应用程序的本地文件夹。

退房为WKWebView loadFileURL的文档。您应该能够通过allowingReadAccessTo参数中的文档目录或完整图像URL,该参数应允许您访问所需的图像。

如果您有图像的网页URL,我宁愿使用Web URL反正而不是试图存储和本地加载图像。您没有在文档目录和WKWebView中使用存储设备是为了从网络加载内容。

+0

谢谢。我有一个使用webView加载本地html的函数。它是一个富文本编辑器,可以输入文本和图像。所以我需要插入图像到HTML。正如你所说,我使用loadFileURL方法,它仍然无法工作。我也找到了一些答案链接,但它无法解决我的问题。 –

0

对我来说,首先分配的基本URL图像文件的父文件夹。然后将整个网址路径插入到您的html喜欢后面。

<img src="/var/mobile/Containers/Data/Application/C217F3BD-1A1B-438A-A436-D878411C7849/Documents/48C4B007-A950-46D2-A719-E025482710A0/images/79042B1F-E11C-42D1-8B49-DD3A0016F421.jpg" 
+0

你是对的,将html文件和图像保存在同一个文件夹中。 –

+0

@Jack Long,其实,我的html文件和图像文件在不同的文件夹中。 – Jerome

+0

我的意思是html文件和图像文件低于baseURL。即使html文件和图像文件位于不同的文件夹中。一切都会安好的。 –