php 实现打包下载,打包下载php文件

0x00 代码如下

function addFileToZip($zip,$zipname,$path){

$handler = opendir($path);

while(($filename = readdir($handler))!==false) {

if($filename != "." && $filename != ".." && $filename!= $zipname){

if (is_dir($path."/".$filename)) { //如果读取的某个对象是文件夹,则递归

addFileToZip($zip,$zipname,$path."/".$filename);

} else {

$zip->addFile($path."/".$filename);

}

}

}

@closedir($path);

}

function tar($zipname,$path) {

$zip = new ZipArchive(); //使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释

if ($zip->open($zipname, ZipArchive::OVERWRITE) === TRUE) {

addFileToZip($zip,$zipname,$path);$zip->close();

} else {

exit('Unable to open file, or file creation failed!');

}

}

function download($zipname) {

if(!file_exists($zipname)){

exit("Zip file does not exist!");

}

header("Cache-Control: public");

header("Content-Description: File Transfer");

header('Content-disposition: attachment; filename='.basename($zipname)); //文件名

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

header("Content-Transfer-Encoding: binary"); //告诉浏览器,这是二进制文件

header('Content-Length: '. filesize($zipname)); //告诉浏览器,文件大小

@readfile($zipname);

unlink($zipname);

}

$zipname = 'bak.zip';

$path = '.';

tar($zipname,$path);

download($zipname);

?>

Reference(侵删):

若未作声明则文章版权归本人(@reber)所有,转载请注明原文链接:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值