在Webkit .NET中打开本地文件

3

某些原因,一个简单的 WebKitBrowser1.Navigate(localfilehere) 并不能正常工作。

我尝试在 URL 中添加 "file://" 但也不起作用。

这看起来很荒谬,但这个功能真的不存在吗?

7个回答

5

看起来您输入了错误的 URL 地址。您可以通过

检查它。
Uri.IsWellFormedUriString

其中一个原因是您在字符串中使用了国家符号。

在这种情况下,之前的答案并不能解决您的问题,因为您还需要对URL进行编码。

您可以使用 System.Web.HttpUtility.UrlEncode 对其进行编码,然后按照之前由X Enterprises描述的方法解决(但您不应替换空格-编码时已经完成了)。

但获取正确的URL最简单的方法是

string url = new Uri(pathToFile, UriKind.Absolute).AbsoluteUri;

3
"

"file://"是正确的协议。要访问文件,比如说"c:\temp\test.html",您可以尝试以下内容:

"file://c/temp/test.html"

请注意斜杠的方向以及驱动器字母后面没有冒号。

"

2

WebKit.Net 0.5 Navigate() 函数以字符串作为其参数(本地/网络文件)。例如,对于本地文件:c:\xxx\yyy zzz.htm 可以按照以下方式传递给 Navigate 函数:

dim sFile As String = "c:\xxx\yyy zzz.htm"
Dim url as new Uri(sFile, UriKind.Absolute)

'Now pass the file's required formatted absolute path
WebKitBrowser1.Navigate(url.AbsoluteUri)

1
创建一个样本HTML页面。 上传到我的资源中。
使用以下代码: WebKitBrowser1.document.write(my.resources.page.html)

1

我已经找到了解决您问题的方法:

1.) 确保路径以 "file:///" 开头
2.) 确保使用文件的完整路径
3.) 确保所有反斜杠都被替换为正斜杠
4.) 确保将所有空格 " " 替换为 "%20"
5.) 确保文件以 ".html" 结尾

因此,这个文件:
"C:\Program Files\test.html"
需要变成:
"file:///C:/Program%20Files/test.html"

希望这能帮到您。


1
假设index.html在bin/debug文件夹中,则使用以下代码:

Use "file:///"+Environment.CurrentDirectory.Replace(@"\",@"/")+"/index.html"

假设index.html在bin/debug文件夹中,并且创建了名为www的文件夹,则使用以下代码:

Use "file:///"+Environment.CurrentDirectory.Replace(@"\",@"/")+"/www/index.html"


0
在Google Chrome中,您可以通过输入file:///后跟文件的完整路径来打开本地文件,因此在Webkit上可能需要使用相同的运算符。

你也把文件名中的所有反斜杠改成正斜杠了吗?file:///C:/Folder/SubFolder/Test.html - Chris Haas
我遇到了同样的问题,我正在更改斜杠。我能够使用webkitBrowser.Navigate来显示一些HTML文件,但是我无法加载从这个HTML引用的JavaScript。所以我无法包含jQuery等内容。 - marek_lani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接