2012-05-13 92 views
1

我正在爲一個站點的簡單文檔管理系統工作 - 用戶可以上傳大約20種不同的文件類型,並且文檔被重命名,然後存儲在www上方的文件夾中,在文檔表中創建以捕獲用戶輸入的元數據,然後通過另一個php文件檢索該項目,以便爲用戶隱藏文件的存儲位置。文件打開/保存爲對話框和mime類型

當用戶點擊使用簡單的href下載文件時,它會調用例如「view.php?doc = image.jpg」 - 當他們這樣做時,當前文件會在瀏覽器中打開,因此jpg打開一個帶有「翅膀」頁面的窗口,如字符等。

我希望能夠強制打開/保存對話框,以便用戶決定要做什麼以及我的應用程序不會嘗試在瀏覽器窗口中打開與上述結果。

從以前的發佈中我發現我知道我不能在「a href」標記中傳遞MIME類型,所以我還有其他選項嗎?例如,我可以將標題信息放入下面的view.php文件嗎?

$_file = $_GET['doc']; 

$filename = './dir/'.$_file; 

if (file_exists($filename)) { 
echo file_get_contents('./dir/'.$_file); 
} else { 
echo "The file $_file does not exist"; 
} 
; 
+0

可能重複[Force下載圖片?](http://stackoverflow.com/questions/5648967/force-download-image) –

+0

我不覺得它是重複的,如果這些都是一個文件類型那麼做起來相當簡單 - 我的挑戰(在我的腦海中)是輸出文件可以是20種類型中的任何一種,所以我需要根據文件類型有不同的頭文件。 – bhttoan

回答

1

你可以使用get_headers()以獲得所需的文件的MIME類型頭,然後用header()來輸出那些標題爲你顯示文件。

或者,簡單地強制下載,這樣的:

header('Content-Description: File Transfer'); 
header("Content-type: application/octet-stream"); 

應該這樣做。

+0

我試過這個,但get_headers()只能用於一個URL,因爲這個文件在www根目錄之外,所以我不認爲這個在這個例子中會起作用。 – bhttoan

+0

添加了一個不使用'get_headers()'的解決方案。 dev-null-dweller是正確的,[Force下載圖像](http://stackoverflow.com/questions/5648967/force-download-image)有你想要的解決方案。我只是複製 - 在這裏改變它。 –

相關問題