实例代码:
代码语言:javascript复制public function downLoad($dataUrl,$saveName)
{
$datalist = [
ROOT_PATH.'/public/introduce/110.docx',
ROOT_PATH.'/public/upfile/110.zip'
];
// print_r($datalist);die;
$filename = ROOT_PATH.'public/'.$saveName.'.zip';
if(file_exists($filename)){
unlink($filename);
}
$zip = new ZipArchive();
if ($zip- open($filename,ZipArchive::CREATE)!== true){
exit('无法打开文件,或者文件创建失败');
}
foreach ($dataUrl as $index = $item) {
if (DIRECTORY_SEPARATOR==''){
$item = str_replace('/',DIRECTORY_SEPARATOR,$item);
$filename = str_replace('/',DIRECTORY_SEPARATOR,$filename);
}
// var_dump($item);
// var_dump(file_exists($item));die;
if (file_exists($item)){
$zip- addFile($item,basename($item));
}
}
$zip- close();
if(!file_exists($filename)){
exit("无法找到文件"); //即使创建,仍有可能失败
}
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.basename($filename));
header('Content-Length: ' . filesize($filename));
@readfile($filename);
@unlink ( $filename );
}
注意:里面的路径全部用绝对路径,不然会找不到文件
附赠其他操作:
解压缩zip文件
代码语言:javascript复制public function unzip_file($file, $dir){
// 实例化对象
$zip = new ZipArchive() ;
//打开zip文档,如果打开失败返回提示信息
if ($zip- open($file) !== TRUE) {
die ("Could not open archive");
}
//将压缩文件解压到指定的目录下
$zip- extractTo($dir);
//关闭zip文档
$zip- close();
}
获取解压文件目录
代码语言:javascript复制public function loopFun($dir)
{
$handle = opendir($dir.".");
//定义用于存储文件名的数组
$array_file = array();
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
$array_file[] = $dir.'/'.$file; //输出文件名
}
}
closedir($handle);
return $array_file;
//print_r($array_file);
}
大家可以在本地测试下,感谢大家的学习和对ZaLou.Cn的支持。