你要做的是不建議檢查這個問題;
Header Location + Content Disposition
Content-Disposition Location标頭
但你可以做到,為了使它工作,你必須在發送之前緩沖你的整個響應.您可以使用輸出緩沖來完成此操作
否則,浏覽器可能會在下載下傳檔案之前解釋位置标頭.這兩種方式都很粗略,是以你不應該這樣做.
請注意,使用内容處理強制“另存為”:附件;将確定用戶端不會去任何地方/導航,是以下面的方法本身應該沒問題.
在php中流式傳輸檔案
// To use header() with 'content-type', why don't you use mime_content_type() function rather than checking the type on the basis of extension?
// Example code:
$file="test.docx";
header("Pragma: public");
header('Content-disposition: attachment; filename='.$file);
header("Content-type: ".mime_content_type($file));
header('Content-Encoding: identity');
ob_clean();
flush();
readfile($file);
?>
// Use $file to map to whichever type of file.
// Note: the mime types should already be defined in apache settings
請注意,原始答案使用的是Content-Transfer-Encoding,它實際上并不存在于HTTP中.該消息來源下面的評論解釋了它:http://www.php.net/manual/en/function.header.php#107044