Php 强制浏览器在默认查看器中打开文件
我有一个小型的内部应用程序,可以从表中提取数据。其中一部分数据是名为Php 强制浏览器在默认查看器中打开文件,php,javascript,browser,webserver,Php,Javascript,Browser,Webserver,我有一个小型的内部应用程序,可以从表中提取数据。其中一部分数据是名为image\u location的字段 一个示例值是: \\192.168.13.8\审核过程中\n宾夕法尼亚州4-0925232\Images\DWB_258906000.tif 当用户加载数据输入屏幕时,我希望弹出并显示一个弹出窗口。尝试此操作时: function poponload(){ var url = "\\\\192.168.13.8\\audits in process\\Nat Penn 4 - 09
image\u location
的字段
一个示例值是:
\\192.168.13.8\审核过程中\n宾夕法尼亚州4-0925232\Images\DWB_258906000.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);
}
我得到这个窗口:
当我手动转到浏览器中的位置时,它会提示我打开或保存:
我的问题-
谢谢。除非我错过了什么,否则在不提示用户的情况下打开一个单独的程序将是一个巨大的、collosal的和[适合这里的任何其他同义词]安全漏洞。
简而言之,没有。在我看来,您正在调用的URL试图在192.168.13.9中找到它。您可能应该更改
url
变量,使其以http://
开头,以强制浏览器识别为外部。这将迫使浏览器像平常一样处理图像。不幸的是,我不认为任何浏览器会在浏览器中呈现.tif图像,并且您不能强制浏览器从网页内部执行超出自身范围的操作。我不确定这是否是您想要的,但是
如果您试图显示的“弹出窗口”是您在手动输入url时显示的浏览器保存/打开弹出窗口,则您要做的是将文件发送到浏览器,并将http头“Content type”设置为“application/octet stream”
或者,您可以直接将用户浏览器指向远程文件,但服务器必须配置为将内容类型头设置为八位字节流。这将确保显示弹出窗口,而不是浏览器执行某些其他操作,如显示图像或打开外部程序
顺便说一句,通过查看地址栏,很容易看出为什么您会出现404 not found错误。查看屏幕截图中的URL<代码>192.168.13.9/\\192.168.13.8。我真的怀疑这是你想要的,因此你的
404
如果您加入协议(例如http:),它可能会自行解决,但这实际上是由于URI的格式与Windows计算机上的路径不同;您可能需要(注意斜线的方向)
http:
是“方案”,读取协议/
表示URI的下一部分是“权限”,读域192.168.13.8
是一个IP地址,即“授权机构”/
表示URI的下一个组件路径的开始
如果您想了解更多有关URI语法的信息,请参阅(第3节将非常有趣)
至于让浏览器显示它,如果浏览器不知道如何以本机方式渲染它,则需要在客户端机器上为该浏览器获取第三方插件,或者以浏览器可以处理的其他格式显示它
如果浏览器本身不知道如何处理它,它将用打开/保存对话框提示用户,正如您在手动输入URL时看到的那样
header('Content-type: application/octet-stream');
echo $file;
exit;
"http://192.168.13.8/audits in process/Nat Penn 4 - 0925232/Images/DWB_2589060000.tif"