2013-05-29 170 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錯誤。