Play Framework Java - 显示存储在本地服务器上的 htm 文件

Play Framework Java - Display htm file stored on local server

你好 Whosebug 社区!

我正在使用 Play Framework 2.1.1 使用 Java。

理想情况下,当用户单击顶部菜单(由导航栏定义)中的 link 时,他会被重定向到存储在内部服务器中的文件。文件路径类型为“file:///R:/PUBLIC/Name/myfile.htm”,文件包含图片

不幸的是,这不起作用(当我单击打开一个空白页面时,标题为 "unknown")而且我真的不明白为什么......我没有错误,只是空白页面。

这是顶部菜单中的link:

        <li><a href="@routes.Application.guideline()" target="_blank">@Messages.get("general.guidelines")</a></li>  

然后这里是controller Application中的guideline()函数:

public static Result guideline() {

    Guideline guidelineLink = Guideline.find.select("*").where().eq("id", 1).findUnique();
    if(guidelineLink.link == null){
        return ok(views.html.display.createError.render());
    }else{      
        return redirect(guidelineLink.link);
    }
}

我检索了数据库中文件的路径,这有效,我一直在使用标准 "http://...." url 对其进行测试。检索到的link是路径above-mentionned.

当然,我已经尝试通过 copy/pasting 在我的浏览器中简单地打开文件并且它有效。我还尝试将扩展名更改为 .html,或删除开头的 "file:///",但没有成功。我在互联网上也一无所获,我的好朋友 Google 让我失望了!

谢谢大家的帮助:-)

出于安全原因,您得到一个空白页面。在 RFC1738 你读到:

The file URL scheme is used to designate files accessible on a particular host computer. This scheme, unlike most other URL schemes, does not designate a resource that is universally accessible over the Internet. (...)

The file URL scheme is unusual in that it does not specify an Internet protocol or access method for such files; as such, its utility in network protocols between hosts is limited.

浏览器能够打开本地计算机上的任何文件的图片。它将开辟新的利用方式,因为没有什么可以阻止远程页面访问您的本地数据。当然,您的浏览器可以打开本地文件,但这只是基本应用程序的附加功能,只有在您手动初始化打开操作时才有效。

要实现你想要的,你可以:

  • 将文件放入您的项目 public 资源
  • 在服务器端加载文件内容(请注意,它必须被授予对该资源的访问权限),然后 return 使用自定义响应