2013-01-17 71 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

相关问题