您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
php實現壓縮一個目錄支持多級目錄(解壓時可以鼠標右鍵解壓到文件名那樣)
发布时间:2022-02-24 23:10:43编辑:雪饮阅读()
最近1-3天來説,領導讓我預估一個項目,本來不太情願,因爲太忙。然後我説是有空預估,領導還不行。非要我在多個項目之間也要同時預估這個項目的工期。那麽雖然最後預估的工期他不太滿意覺得太長了。。。我心裏就想,那你爲何不自己預估。
話不多談,這裏回到正題。這個預估項目中有一個需求是壓縮文件然後進行導出。然後還是支持多級目錄的。那麽具體實現如:
test2.php:
<?php
//遞歸遍歷文件目錄為數組
function myScanDir($dir)
{
$file_arr = scandir($dir);
$new_arr = [];
foreach($file_arr as $item){
if($item!=".." && $item !="."){
if(is_dir($dir."/".$item)){
$new_arr[$item] = myScanDir($dir."/".$item);
}else{
$new_arr[] = $item;
}
}
}
return $new_arr;
}
//可實現多級目錄壓縮,並支持中文不亂碼(測試環境為php7.4(也可能是php7.1,但是php7.4可能性更高)的寶塔環境)的一個簡單實例
//相當於你點擊某個文件夾"圖片"后發現“圖片”目錄中有"圖片001.jpg"和"圖片002.jpg",那麽此時ctrl+a選擇了這個"圖片"目錄中所有圖片(目前是“圖片001.jpg”和“圖片002.jpg”)后鼠標右鍵=>壓縮到"圖片"(這裏以winrar舉例,其它壓縮軟件或有不同)
//然後壓縮完成后點擊剛壓縮的“圖片.zip”右鍵=》解壓到“圖片”即創建了一個在解壓上下文路徑下新建的一個“圖片”目錄,再次進入這個新創建的“圖片”目錄就是上面我們之前全選的“圖片001.jpg"、"圖片002.jpg”
$filename = "202202_php.zip";
$zip = new ZipArchive();
$zip->open($filename, ZipArchive::CREATE); //打开压缩包
$zip->addEmptyDir("张三");
$zip->addEmptyDir("张三/线路a");
$zip->addEmptyDir("张三/线路a/1号杆");
$zip->addEmptyDir("张三/线路a/1号杆/图片");
$zip->addFile("/www/wwwroot/202202/张三/线路a/1号杆/图片/接地引下线A-1.jpg","张三/线路a/1号杆/图片/接地引下线A-1.jpg");
$zip->close();
?>
关键字词:php,壓縮,多級目錄
相关文章
- Dockerfile的使用(基於php官方docker鏡像安裝擴展)
- docker-composer脚本編寫系列之nginx與php的結合
- webman-配置數據庫-pdo_pgsql擴展安裝(php7.3.4)
- webman-配置數據庫-psql基本使用及php7.3.4中pgsql擴
- 基于GuzzleHttp(thinkphp5实现原生获取獲取微信公衆平
- workerman16进制与2进制字符串的转换(局限有点狭隘,應該
- workerman系列之tp5(thinkphp5)日志结合workerman使用
- workerman常见问题-php的几种回调写法-类的静态方法作
- workerman常见问题-php的几种回调写法-类方法作为回调
- workerman常见问题-php的几种回调写法-普通函数回调