我在一個網站上做了一些工作,該網站有一個安全的區域,只有在用戶登錄後纔可以使用。在這個區域有一個鏈接到pdf文檔的頁面,可以下載。物理文檔不在網站的根目錄中。在PDF文檔中的鏈接是這個樣子:使用正確的文件名在瀏覽器中安全地下載文件
index.php頁面=安全區域/下載文件& = protected.pdf
它執行以下(注:我知道這是必經之路強制下載,而不是打開文件內瀏覽器):
// check security, get filename from request, prefix document download directory and check for file existance then...
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Connection: Close');
set_time_limit(0);
readfile($file);
這種運作良好,但在Firefox 3和Internet Explorer 7(我還沒有與其他任何瀏覽器進行測試)將不能打開此文件在瀏覽器內部,它們都顯示下載對話框(如預期的那樣)。如果選擇「打開」而不是「保存」,則會下載文檔,並在瀏覽器之外啓動Adobe Reader以呈現文檔。
我遇到的問題是在瀏覽器中下載文件,並保存了正確的默認文件名。
我想要在瀏覽器中打開文檔。這樣做的一種方法是使用標題「Content-Disposition:inline;」但這意味着我無法指定文件名(因爲瀏覽器似乎被忽略)。有這樣做的問題是,當我保存文檔,默認名是該URL,而不是PDF文檔的文件名:
http___example.com_index.php_page=secure_area_download&file=protected.pdf
我怎樣才能得到Firefox和Internet Explorer打開裏面的文件瀏覽器並提供正確的默認文件名以保存?
我非常想要投下這個票,因爲它沒有回答這個問題,但可能沒有令人滿意的答案。 – mjaggard 2012-12-04 10:25:57
@mjaggard其實它回答我的問題。 – 2013-01-30 10:21:24