2013-12-18 38 views
0

我使用的是Nexus 7進行測試,其他任何平臺都沒有我可以測試的相同情況。我用handle.php處理下載,echo文件內容之前,我用:Android下載文件名不對應標題

header('Content-length:' . $row['size']); 
header('Content-type:' . $row['mime']); 

header('Content-Disposition:inline; filename="' . $row["file_name"] . '"'); 

然後我使用Android下載文件,文件名是不過handle.pdf,如果我將我的代碼的最後一行更改爲

header('Content-Disposition:attachment; filename="' . $row["file_name"] . '"'); 

有趣的是,文件名成了我想要的。 如果Content-Dispositioninline並且只接受文件名attachment,Android是否無法獲取文件名? 順便說一下,我使用了原生Chrome瀏覽器(32.0)和Android 4.4.2。

回答

1

RFC 2616, Sec 19

內容處置響應頭域已經被提議作爲原始服務器建議一個默認文件名的手段如果內容被保存到一個文件中的用戶需求。此用法源自RFC 1806中定義的內容處置[35]。

請注意,filename-parm僅適用於附件,不適用於內聯內容。事實上,實際上,大多數瀏覽器都會解析參數並遵守它,但標準並不要求這種行爲。如果您打算髮送要下載的文件,則應該將內容處置設置爲attachment

+0

謝謝,有沒有什麼辦法可以讓我的桌面在瀏覽器和移動設備上打開,然後按照我的意願下載文件名? – xhg

+0

您將不得不根據UA發送不同的標頭。爲移動瀏覽器發送帶有文件名的附件,併爲桌面瀏覽器內聯(帶有可選文件名)。請注意,許多網站(例如gmail)都會有一個View和Download鏈接來完成這個功能。 – 323go