这是工作昨晚,但我必须小心改变了一些东西,因为它不是现在。
我所要做的应该是从这些标题明确:
Content-Disposition: attachment;filename=english_customizable.xml
Location: http://tortoisewrath.com/files/2.xml
然而,当发送此头Content-Disposition
部分不重定向后工作。
...为什么?
这是工作昨晚,但我必须小心改变了一些东西,因为它不是现在。
我所要做的应该是从这些标题明确:
Content-Disposition: attachment;filename=english_customizable.xml
Location: http://tortoisewrath.com/files/2.xml
然而,当发送此头Content-Disposition
部分不重定向后工作。
...为什么?
你正在试图做是不可取的检查这个问题; 头位置+内容处理
内容处置+ Location头
但你可以做到这一点,以使其工作你必须在发送之前缓冲你的整个响应。 您可以使用输出缓冲做到这一点
否则,浏览器可以解释的Location
被下载的文件前头。 这是粗略无论哪种方式,所以你不应该想这样做。
请注意 ,强迫“另存为”使用Content-Disposition: attachment;
将确保客户不走/随时随地导航,所以下面对自己的方法应该是在任何情况下的罚款。
流媒体在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:
<?php
$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
来源: http://www.php.net/manual/en/function.header.php#107581
请注意,原来的答案使用Content-Transfer-Encoding
,它实际上并不在HTTP存在。 该源下面的评论解释了它: http://www.php.net/manual/en/function.header.php#107044