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);
}

我得到这个窗口: 在此处输入图像描述

当我在浏览器中手动转到该位置时,它会提示我打开或保存在此处输入图像描述

我的问题-

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

谢谢。

4

4 回答 4

1

查看屏幕截图中的那个 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 时看到的那样。

于 2013-05-30T00:17:30.077 回答
0

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

于 2013-05-30T00:01:56.303 回答
0

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

于 2013-05-30T00:03:19.637 回答
0

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

如果您尝试显示的“弹出窗口”是您在手动输入 url 时弹出的浏览器保存/打开弹出窗口,那么您要做的是将文件发送到浏览器,并将 http 标头“内容类型”设置为“应用程序/八位字节流”。

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

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

顺便说一句,通过查看地址栏很容易看出为什么您会收到 404 not found 错误。

于 2013-05-30T00:17:23.970 回答