2017-09-05 92 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文件和圖像文件位於不同的文件夾中。一切都會安好的。 –