2013-05-29 126 views
0

我有一个从表格中提取数据的小型内部应用程序。其中一部分数据是一个名为image_location的字段。强制浏览器在默认查看器中打开文件

一个实例值将是:

\\192.168.13.8\audits in process\Nat Penn 4 - 0925232\Images\DWB_2589060000.tif

当数据输入屏幕被用户加载,我想一个弹出弹出和显示。当尝试这样的:

function poponload(){ 
    var url = "\\\\192.168.13.8\\audits in process\\Nat Penn 4 - 0925232\\Images\\DWB_2589060000.tif"; 

    testwindow = window.open(url, "mywindow", "location=1,status=1,scrollbars=1,width=900,height=900"); 
    testwindow.moveTo(0, 0); 
} 

我得到这个窗口: enter image description here

当我手动去的位置在我的浏览器,它会提示我打开或保存enter image description here

我的问题 -

  1. 我可以强制浏览器显示它的本地计划中的文件M&
  2. 是否必须设置我的“源”服务器来存放所有文件来处理这个问题?

谢谢。

回答

1

查看屏幕截图中的URL; 192.168.13.9/\\192.168.13.8。我真的怀疑这是你想要的,因此你的404

如果您输入协议,它可能会自行解决,例如,http:,但这实际上是由于URI的格式不同于机器上的路径;你可能想(注意斜线方向)

"http://192.168.13.8/audits in process/Nat Penn 4 - 0925232/Images/DWB_2589060000.tif" 

http:是“计划”,阅读协议
//意味着URI的下一个部分是“权威”,读域
192.168.13.8是IP地址,即。一个“权威”
/表示的URI,路径

如果您想了解更多关于URI语法的下一个组件的开始,是official RFC3986(第3节将是很有意思)。

至于使浏览器显示它,如果浏览器不知道如何在本机渲染它,你需要在客户端机器上为该浏览器获取第三方插件,或者在其他显示器上显示该插件浏览器可以处理的格式。

如果浏览器本身不知道如何处理它,它会通过打开/保存对话框提示用户,就像您在手动输入URL时看到的那样。

0

除非我已经错过了一些东西,能够打开一个单独的程序,而不先提示用户将是一个巨大的,collosal和[适合这里的任何其他同义词]安全漏洞。 总之,第

0

我看来像你打电话试图找到它里面192.168.13.9该URL。您应该更改url变量,以便它以http://开头,以强制浏览器将其识别为外部。这应该强制浏览器像通常那样处理图像。不幸的是,我不认为任何浏览器都会在浏览器中呈现.tif图片,并且您不能强制浏览器在网页内部自行做一些事情。

0

我不能完全肯定这是你想要什么,但...

如果“弹出”你想显示的是浏览器保存/你展示弹起输入URL时手动然后打开弹出你想要做的就是把文件发送到浏览器,http头“Content-type”设置为“application/octet-stream”。

header('Content-type: application/octet-stream'); 
echo $file; 
exit; 

或者你可能只是指导用户浏览到远程文件,但那么服务器就必须配置为将内容类型头八位字节流。这将确保显示弹出窗口而不是浏览器执行其他操作,例如显示图像或打开外部程序。

BTW很容易看出为什么您通过查看地址栏得到那个没有找到404错误。