本地html中的图像无法加载到windows8中的webview中

时间:2013-01-17 09:53:31

标签: html windows-8 webview

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

2 个答案:

答案 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