php 下载的文件损坏,下载.zip文件运行损坏的文件php

我正试图强制下载受保护的zip文件(我不希望人们在没有先登录的情况下访问它.

我有为登录创建的功能等,但我遇到了下载文件损坏的问题.

这是我的代码:

$file='../downloads/'.$filename;

header("Content-type: application/zip;\n");

header("Content-Transfer-Encoding: Binary");

header("Content-length: ".filesize($file).";\n");

header("Content-disposition: attachment; filename=\"".basename($file)."\"");

readfile("$file");

exit();

这是错误:无法打开文件:它似乎不是有效的存档.

否则文件下载正常,所以它必须是我在标题上做错的事情.

有任何想法吗?

解决方法:

此问题可能有多种原因.可能您的文件未找到或无法读取,因此文件的内容只是PHP错误消息.或者已经发送了HTTP标头.或者你有一些额外的输出,然后破坏你的文件的内容.

尝试在脚本中添加一些错误处理,如下所示:

$file='../downloads/'.$filename;

if (headers_sent()) {

echo 'HTTP header already sent';

} else {

if (!is_file($file)) {

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');

echo 'File not found';

} else if (!is_readable($file)) {

header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');

echo 'File not readable';

} else {

header($_SERVER['SERVER_PROTOCOL'].' 200 OK');

header("Content-Type: application/zip");

header("Content-Transfer-Encoding: Binary");

header("Content-Length: ".filesize($file));

header("Content-Disposition: attachment; filename=\"".basename($file)."\"");

readfile($file);

exit;

}

}

标签:php,download,zip,header

来源: https://codeday.me/bug/20190926/1819277.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值