目前,我正在为我们公司使用的网络驱动器构建本地搜索引擎。
搜索引擎建立在Solr和Tika之上。我构建了一个索引器,它通过网络对Samba共享进行索引,该索引工作得很好并且索引配置文件中给出的所有目录。然而,这并不是真正相关。
我们当前遇到的问题是,连接到Solr并提供搜索结果的Web界面将尝试提供本地file://
文件,这些文件是指向具有绝对路径或Samba路径的文件的链接。但是,谷歌Chrome浏览器当然不允许服务file://
。 Chrome提供的错误是:
Not allowed to load local resource: file:///name/to/file.pdf
这是显而易见和符合逻辑的,但我想解决这个问题并提供本地服务。文件给我们的用户。或者至少打开一个带有给定路径的资源管理器窗口。
我想知道这是否可行或是否有可用的解决方法?要为这些文件提供服务的服务器正在Apache或Tomcat上运行(没关系)。
答案 0 :(得分:0)
如果没有使用特定于浏览器的插件,几乎不可能打开file://
,我通过指定自定义URI处理程序和将打开的特定于Windows的应用程序创建了一种解决方法{{ 1}}与给定目录。
到目前为止,这不是我的问题的理想答案,但我认为这是内联网搜索应用程序的一个不错的解决方法。
答案 1 :(得分:0)
从可用性和安全性的角度来看,将文件从应用程序流式传输到浏览器是一个更好的主意。
通过为流分配MIME类型,用户的浏览器可以决定如何最好地打开文件并将其显示给用户。
通过从您的应用程序流式传输,可以保持对数据的控制。不会泄露您服务器上文件的位置,并且可以轻松实现正确的身份验证,授权和审核。
假设Java基于您使用Solr和Tika:
http://www.java-forums.org/blogs/servlet/668-how-write-servlet-sends-file-user-download.html