2

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

4

2 回答 2

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());     
于 2013-01-22T09:08:06.573 回答
0

尝试使用 ms-appx-web:// 方案而不是 ms-aspx:// 从 WebView 加载 html。如果这不起作用,您可能需要使用 ms-appdata:// 方案来访问图像(如果它位于您的应用程序数据文件夹中)。

一些可能有帮助的进一步资源:
如何将本地 HTML 文件加载到 Webview
URI 方案
中如何引用内容

于 2013-01-17T15:35:51.913 回答