我想将本地文件夹中的本地html文件加载到webview,但是WebView不支持'ms-aspx:///'protocal,我找到了一个解决方案来读取要传输的html文件,然后将它转换为字符串,使用NavigateToString方法加载html,效果很好。但是,如果html文件中有图像,图像无法显示,任何人都可以提供帮助吗?
答案 0 :(得分: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());
答案 1 :(得分: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