// $zip = new ZipArchive; // $res = $zip->open($filePath); // if ($res === TRUE) { // Log::info("unzip success"); // //解压缩到test文件夹 // $zip->extractTo('data'); // trans-10001-20180419-xls.zip // $zip->close(); // } else { // Log::info('failed, code:' . $res); // }
if (!function_exists('unZip')) { function unZip($dir) { $zip = zip_open($dir); $dirnames = dirname($dir); if ($zip) { while ($zip_entry = zip_read($zip)) { if (zip_entry_open($zip, $zip_entry, "r")) { $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); // 读取zip文件, 并制定读取的长度 $fname = $dirnames . '/' . zip_entry_name($zip_entry); if (is_dir($fname)) // 如果是目录则创建目录(目录是未创建的) { mk_dir($dirnames . '/' . zip_entry_name($zip_entry)); } else // 是文件 { mk_dir(dirname($fname)); file_put_contents($fname, $buf); // 将读取到的内容直接写入文件 } zip_entry_close($zip_entry); } } zip_close($zip); } } } if (!function_exists('mk_dir')) { // 循环创建目录 function mk_dir($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) { return true; } if (!mk_dir(dirname($dir), $mode)) { return false; } return @mkdir($dir, $mode); } }