我正在构建我们组织内部使用的rails应用程序。
所有客户端计算机驱动器都映射到共享文件夹,所有文件夹都通过相同的路径访问,如下所示:
file://emc01a/projects/.../HTML_Report/index.html
现在,我尝试使用以下块:
<%= link_to "Click here to view the report", @test_meta.test_log, target: "blank" %>
这会生成正确的链接,但应用程序根本无法响应。
接下来,我试过了:
<%= link_to "Click here to view the report", "http://"+@test_meta.test_log, target: "blank" %>
这有所不同,现在打开了一个新选项卡,但路径不能正常工作,因为它被翻译为:emc01a/projects/.../HTML_Report/index.html
,浏览器无法将其解析为实际路径。
我也尝试过:
<%= link_to "Click here to view the report", "http://file:"+@test_meta.test_log, target: "blank" %>
这让我感到file//emc01a/projects/.../HTML_Report/index.html
如此接近,但我还没有让它发挥作用。
有什么想法吗? :)
答案 0 :(得分:0)
实际上我认为上述问题(在我的评论中)是分散注意力并且真正的问题是安全问题:默认情况下,您的浏览器是沙盒的,无法从本地文件系统(文件://链接指向)读取文件
我认为处理此问题的方法是在rails应用的公用文件夹中添加一个指向共享文件夹的符号链接,然后您就可以从应用程序的共享文件夹中提供文件,就好像它们是任何其他资产一样。
例如在终端中,在rails根文件夹
中ln -s /path/to/the/shared/folder public/shared
例如,如果共享文件夹位于&#34; / emc01a / projects&#34;你可以像这样建立文件夹的符号链接:
ln -s /emc01a/projects public/shared
现在您可以链接到此文件file://emc01a/projects/HTML_Report/index.html
将/shared
替换为/emc01a/projects
:
<%= link_to "Click here to view the report", "/shared/HTML_Report/index.html", target: "_blank" %>
编辑:一旦你有了这个工作,你可以通过设置nginx / apache / whichever-http-server-you的配置直接提供文件而不是通过rails来更高效地完成它。如果它仅适用于Intranet站点,则可能没有必要。