繁体   English   中英

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

[英]Forcing the browser to open file in default viewer

我有一个小的内部应用程序,可以从表中提取数据。 该数据的一个是称为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);
}

我得到这个窗口: 在此处输入图片说明

当我手动转到浏览器中的位置时,它会提示我打开或保存 在此处输入图片说明

我的问题-

  1. 我可以强制浏览器在其本机程序中显示文件吗?
  2. 我是否必须设置包含所有文件的“源”服务器来处理此问题?

谢谢。

在屏幕快照中查看该URL; 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语法的更多信息,请参阅官方RFC3986 (第3节将很有趣)。

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

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

除非我没有错过任何东西,否则在不首先提示用户的情况下打开单独的程序将是一个巨大的,杂乱无章的工作,并且[在这里适合任何其他同义词]安全漏洞。 简而言之,不。

在我看来,您正在呼叫的URL试图在192.168.13.9内找到它。 您可能应该更改url变量,使其以http://开头,以强制浏览器将其识别为外部变量。 那应该迫使浏览器像通常那样处理图像。 不幸的是,我认为没有任何浏览器会在浏览器中渲染.tif图像,并且您不能强迫浏览器从网页内部在其自身之外执行某些操作。

我不确定这就是您想要的,但是...

如果您尝试显示的“弹出窗口”是浏览器的“保存/打开弹出窗口”,而您手动输入url时会弹出该弹出窗口,则您要执行的操作是将文件发送到浏览器,并将HTTP标头“ Content-type”设置为“应用程序/八位位组流”。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM