php header 强制下载,用php强制文件下载使用header()

用php强制文件下载使用header()

我希望用户能够下载我的服务器上的一些文件,但是当我尝试使用互联网上的许多这样的例子时,似乎没有任何东西可以用于我。 我试过这样的代码:

我甚至试图用我能find的最基本的例子,像这样:

当我testing了这个,我已经删除了所有其他的代码,并使用一个空的文件,只是这个代码,以消除外部来源创build的任何故障。

当我查看控制台时,文件被发送与正确的头,即

'Content-Disposition: attachment; filename="Image.png"'

但是保存对话框不显示。

我也尝试了内联处理,而不是内容处置标题中的附件,但这也没有什么区别,我已经在Firefox 8.0.1 Chrome 15.0.874.121和Safari 5.1.1中testing过了。

我敢肯定你不会在文件下载时将mimetypes添加为JPEG格式:

header('Content-Type: image/png');

这些标题从来没有让我失望:

$quoted = sprintf('"%s"', addcslashes(basename($file), '"\\')); $size = filesize($file); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $quoted); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size);

问题是,我用ajax发送消息到服务器,当我用直接链接下载文件一切工作正常。

我用这个其他的Stackoverflow问答材料,它对我很好:

Ajax文件使用Jquery,PHP下载

这对我来说就像下载PNG和PDF的魅力。

header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file_url)); //Absolute URL ob_clean(); flush(); readfile($file_url); //Absolute URL exit();

它为我工作

$attachment_location = "filePath"; if (file_exists($attachment_location)) { header($_SERVER["SERVER_PROTOCOL"] . " 200 OK"); header("Cache-Control: public"); // needed for internet explorer header("Content-Type: application/zip"); header("Content-Transfer-Encoding: Binary"); header("Content-Length:".filesize($attachment_location)); header("Content-Disposition: attachment; filename=filePath"); readfile($attachment_location); die(); } else { die("Error: File not found."); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值