强制浏览器在默认查看器中打开文件

时间:2013-05-29 23:48:47

标签: php javascript browser webserver

我有一个小型内部应用程序从表中提取数据。该数据的一部分是名为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. 我能够强制浏览器在其原生程序中显示文件吗?
  2. 我是否必须设置包含所有文件的“源”服务器来处理此问题?
  3. 感谢。

4 个答案:

答案 0 :(得分:1)

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

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

"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节会很有趣)。

至于浏览器显示它,如果浏览器不知道如何以原生方式呈现它,您需要在客户端的计算机上为该浏览器获取第三方插件,或者以其他格式显示它浏览器可以处理。

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

答案 1 :(得分:0)

除非我错过了什么,否则能够在没有首先提示用户的情况下打开单独的程序将是一个巨大的,崩溃的,并且[适合任何其他同义词]安全漏洞。 简而言之,没有。

答案 2 :(得分:0)

在我看来,你正在调用的URL正试图在192.168.13.9中找到它。您应该更改url变量,使其以http://开头,以强制浏览器识别为外部变量。这应该会强制浏览器像往常一样处理图像。不幸的是,我不认为任何浏览器会在浏览器中呈现.tif图像,并且您无法强迫浏览器在网页内部执行某些操作。

答案 3 :(得分:0)

我不确定这是你想要的但是......

如果您尝试显示的“弹出窗口”是手动输入网址时弹出的浏览器保存/打开弹出窗口,那么您要做的是将文件发送到带有http标头的浏览器“Content-type “设置为”application / octet-stream“。

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

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

顺便说一下,通过查看地址栏很容易看出为什么你得到404找不到错误。

相关问题