2013-01-17 73 views
2

我想加載本地文件夾中的本地html文件到webview,但WebView不支持'ms-aspx:///'protocal,I找到了一個解決方案來讀取html文件進行流式處理,然後將其轉換爲字符串,使用NavigateToString方法加載html,效果很好。但是,如果html文件中有圖像,圖像無法顯示,任何人都可以提供幫助?在本地html中的圖像無法加載到Windows8的webview

回答

5

我已經解決了。

解決方案:

轉換圖像文件爲Base64字符串

StorageFolder appFolder = ApplicationData.Current.LocalFolder; 
     StorageFile file = await appFolder.GetFileAsync("SplashScreen.png"); 
     using (var stream = await file.OpenAsync(FileAccessMode.Read)) 
     { 
      var reader = new DataReader(stream.GetInputStreamAt(0)); 
      var bytes = new byte[stream.Size]; 
      await reader.LoadAsync((uint)stream.Size); 
      reader.ReadBytes(bytes); 
      base64 = Convert.ToBase64String(bytes); 
     } 

使用StringBuilder創建HTML字符串

sb.Append("<html><head><title>Image test</title></head><body><p>This is a test app!</p><img src=\"data:image/png;base64,"); 
     sb.Append(base64); 
     sb.Append("\" /></body></html>"); 
     TestWebView.NavigateToString(sb.ToString());  
+0

這節省了我的一天。謝謝! – Clemens

+0

周試圖在WinRT環境中的本地html文件中顯示圖像的研究,你完全用這個答案殺死它!僅供參考我的解決方案不使用Web查看器,而是動態創建文件然後啓動它。你可以看到我的解決方案[這裏](http://stackoverflow.com/questions/24197460/how-to-create-report-for-windows-store-app/27387332#27387332) –

0

嘗試使用ms-appx-web://方案而不是ms-aspx://從WebView加載html。如果這不起作用,如果它位於應用程序數據文件夾中,則可能需要使用ms-appdata://方案訪問該圖像。

一些進一步的資源,可幫助:
How to load a local HTML-File into Webview
URI schemes
How to reference content

+0

I'ts本地HTML文件,所以我不能使用ms-appx-web,webview不支持其他模式。我將html的內容轉換爲字符串,然後使用NavigateToString方法加載html,除了圖像以外,內容的效果很好。 – Allen4Tech

相關問題