【问题标题】:Linking to local content in a web application链接到 Web 应用程序中的本地内容
【发布时间】:2011-02-25 03:50:12
【问题描述】:

我正在开发旧应用程序的替换应用程序。由于遗留应用程序的某些设计限制,“附件”在我们的数据库中存储为字符串路径(通常是存储在 Windows 共享驱动器上的文件)。然后,旧应用程序可以通过打开 Windows 命令外壳并执行给定路径来“打开”附件。

旧版 (Oracle Forms) 应用程序正在被基于 JSF 的 J2EE Web 应用程序淘汰。新应用程序需要能够以某种方式“打开”或链接到这些旧附件。这甚至可能吗?我曾尝试使用 file:// URL,但使用它们有很多注意事项。它们仅适用于 IE、firefox/chrome(和我假设的其他现代浏览器)中的远程主机,阻止本地文件 URL。

仅在 IE 上工作是可以使用此特定功能的东西。我进一步遇到了带有空格的文件路径的问题。出于某种原因,如果 IE 遇到带有空格的文件路径,比如说

C:\Documents and Settings\user123\My Documents\testing\someFile.txt

它拒绝打开该链接。浏览器会自动将空格 (' ') 替换为其编码的 URL '%20'。

我正在尝试的关联链接如下所示:

<a href="file:///C:\Documents and Settings\user123\My Documents\testing\someFile.txt">link</a>

我缺少什么简单的东西吗?或者有没有更简单的方法?

我不太确定要标记什么,因此请随时根据需要重新标记。

【问题讨论】:

    标签: html internet-explorer file hyperlink


    【解决方案1】:

    经过一些广泛的测试,我得出以下结论:

    • 只有 IE 会从远程主机打开页面上的 file:// 链接,其他浏览器会直接阻止它们,并且当用户单击它们时不会发生任何事情。
    • IE 只会打开指向驻留在网络驱动器上的文件的 file:// URL
      • 如果用户单击指向用户本地驱动器上文件的 file:// 链接,则不会发生任何事情,也不会出错。
    • 如果用户单击指向网络文件的 file:// 链接,它将在浏览器中打开,如果可能的话。
    • 如果 file:// url 指向无效位置(未映射的网络驱动器,网络驱动器上不存在的文件),Windows 将显示弹出错误。
    • 文件路径中的空格需要用 %20 进行 URL 编码

    希望这可以帮助其他正在寻找文件 url 信息的人。

    【讨论】:

      【解决方案2】:

      如果您在文件路径周围使用双引号 (")(您可能需要将这些 URL 编码为 %22),Windows 将可以使用完整路径:

      <a href="file:///%22C:\Documents and Settings\user123\My Documents\testing\someFile.txt%22">link</a>
      

      【讨论】:

      • 即使在指向另一个本地文件的简单本地 html 文件中,我也无法让它工作。也许我错过了一些特殊的字符转义?
      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多