2015-06-03 47 views
2

您好Stackoverflow社区!播放框架Java - 显示存储在本地服务器上的htm文件

我使用Java播放框架2.1.1工作。

理想我想,当在顶部菜单(通过导航栏定义)的链接,在用户点击他被重定向到存储在内部服务器上的文件。文件路径类型为“file:/// R:/PUBLIC/Name/myfile.htm”,并且该文件包含图片。

不幸的是,这并不工作(当我点击一个空白页面打开,标题为“未知”),我真的不能明白,为什么我还没有任何错误,只是空白页。

这里是顶部菜单链接:

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

那么这里就是指引()函数在控制器应用:

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:// ....”网址进行测试。检索的链接是上面提到的路径。

当然,我曾尝试只需打开通过复制/粘贴在文件中我的浏览器和它的作品。我也尝试将扩展名更改为.html,或者在开始时删除“file:///”,但没有成功。我在互联网上也没有发现任何东西,我的好朋友谷歌在这一个上失败了!

谢谢大家的帮助:-)

回答

0

你得到的,因为安全原因,一个空白页。在RFC1738您阅读:

文件URL方案是用来指定一个特定的 主机上访问的文件。该方案与大多数其他URL方案不同, 未指定通过互联网可普遍访问的资源。 (...)

文件URL方案是不寻常的,因为它没有指定这些文件的互联网 协议或访问方法;因此,它在主机之间的网络协议的效用是有限的。

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

达到你想要,你可以什么:

  • 将文件放在你的项目的公共资源
  • 加载文件的服务器端的内容(请注意,它必须具有访问权限被授予该资源),然后用自定义响应
+0

谢谢你的答案回吧! 我不明白的是,在这个位置,网络中的任何用户都可以访问该文件,为什么不浏览器?我的意思是我不是创建文件并将其放在那里的人,但是我可以从我的电脑打开它,有什么区别? 对不起,如果这应该是显而易见的:-( – delphrd

+0

我起初误解了你的问题。你的评论明确了,所以我更新了我的帖子。 –

+0

谢谢你的帮助,现在更清楚了:-) – delphrd

相关问题