成功下载文件,但是解压报错了

来源:2-11 文件下载函数封装

西岚Silan

2018-03-24 04:50:21

http://img.mukewang.com/climg/5ab568120001b5c205180205.jpg

http://img.mukewang.com/climg/5ab56814000189ad05440264.jpg

function down_file1(string $filename, array $allowDownExt = array('jpeg', 'jpg', 'png', 'gif', 'txt', 'html', 'php', 'rar', 'zip'))
{
//检测下载文件是否存在,并且可读
if (!is_file($filename) || !is_readable($filename)) {
return false;
}
//检测文件类型是否允许下载
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
if (!in_array($ext, $allowDownExt)) {
return false;
}
//通过header()发送头信息
//告诉浏览器输出的是字节流
header('Content-Type:application/octet-stream');

//告诉浏览器返回的文件大小是按照字节进行计算的
header('Accept-Ranges: bytes');

$filesize= filesize($filename);
//告诉浏览器返回的文件大小
header('Accept-Length: ' . filesize($filename));

//告诉浏览器文件作为附件处理,告诉浏览器最终下载完的文件名称
header('Content-Disposition: attachment;filename=king_' . basename($filename));

//规定每次读取数据的字节数为1024个字节,直接输出数据
$read_buffer=1024;
$sum_buffer=0;
$handle=fopen($filename,'rb');
while(!feof($filename)&&$sum_buffer<$filesize){
echo fread($handle,$read_buffer);
$sum_buffer+=$read_buffer;
}
fclose($handle);
exit;

}
header("content-type:text/html;charset=utf-8");
require_once 'myfunction.php';
$filename=$_GET['filename'];
down_file1($filename);

文件能够成功下载,但是解压的时候报错,文件路径没有错,跟download.php放在同一目录

写回答

1回答

imooc的铁粉

2018-03-25

建议参考:这个解压出错的可能性有很多,最大的可能性是你下载文件时损坏了,这样损坏的文件肯定是解压不了的。

第一种可能:下载文件不全或下载时出错造成的,这样无法解压,可以重新再下载一次,最常见的。
第二种可能:别人上传的时候就出现了错误,你下载到本地自然会出错,这样的只能再找源文件了。
第三种可能:你的解压软件出现了问题,可以重新换一个解压软件再进行解压。
第四种可能:电脑系统出现问题了,把文件复制到其它电脑上,然后再解压

0

0 学习 · 2569 问题

查看课程