前言:
此刻咱们对“php复制文件夹到另外一个地方”大概比较关心,各位老铁们都需要知道一些“php复制文件夹到另外一个地方”的相关文章。那么小编也在网摘上汇集了一些关于“php复制文件夹到另外一个地方””的相关文章,希望看官们能喜欢,你们快快来了解一下吧!PHP将文件夹打包成zip压缩包
有些虚拟空间没有控制面板在线打包的功能,这里使用PHP打包某个目录为zip,直接在浏览器执行即可打包,直接上代码
<?php/** * php zip压缩文件夹 * Author: Dcr163 * Date: 2021/09/07 * Time: 09:33 */class zip{ public $files = []; //添加到zip中的文件 public $rootDir = ''; //当前工作目录 public $openExclude = ''; //是否开启过滤指定后缀 /** * 文件夹打包成zip * @param $dist 需要打包的目录 * @param $zipFile 打包的文件名 * @throws ErrorException */ public function index($dist,$zipFile,$openExclude=false){ if( !class_exists('ZipArchive') ) throw new ErrorException('ZipArchive 扩展未启用'); $stime = $this->formatMicotime(microtime()); $this->rootDir = str_replace('\\','/',getcwd()); $this->openExclude = $openExclude; $zipDir = $this->rootDir .'/'.$dist; $this->listDirs($zipDir); if( empty($this->files) ) throw new ErrorException('打包失败,需要打包的文件为空'); //实例化zip类 $zip = new ZipArchive(); //打开压缩包 新建或写 $zipRes = $zip->open($zipFile,ZipArchive::CREATE | ZipArchive::OVERWRITE ); if( $zipRes !== true ) throw new ErrorException('zip文件打开失败,错误代码:'.$this->zipErrorMsg($zipRes)); $addRes = [];//添加压缩文件状态 foreach ($this->files as $v){ //把文件添加到压缩包里 $res = $zip->addFile($v,str_replace($this->rootDir,'',$v)); $addRes[]=$res; } //关闭资源 $zip->close(); $etime = $this->formatMicotime(microtime()); if( count($addRes) ) { echo '打包成功,成功打包:'.count($addRes).' 个文件;运行时间:'.round($etime-$stime,2).' S'; } else { echo '打包失败'; } } /** * 遍历所有文件 * @param $dir */ public function listDirs($dir){ $dirRes = opendir($dir); while( false !== ($file = readdir($dirRes)) ){ if( in_array($file,['.','..'])) continue; $realFile = $dir.$file; //如果是文件夹,则递归 / 这个不能少 if( is_dir($realFile) ){ $this->listDirs($realFile.'/'); } else { if( $this->openExclude ){ //排除压缩文件不添加 $excludeArr = ['zip','tar','gz','ara','7z']; //分隔文件,用于查询文件后缀 $tmpArr = (explode('.',$realFile)); if( count($tmpArr) >1 ){ //获取文件的后缀 $ext = strtolower($tmpArr[count($tmpArr)-1]); //排除指定后缀的文件 if( in_array($ext,$excludeArr) ) continue; } } //添加到文件列表中 $this->files[] = $realFile; } } } /** * 错误提示 * @param $code * @return mixed|string */ protected function zipErrorMsg($code){ $errorCode = array( 4=>'Seek error', 5=>' Read error', 9=>'No such file.', 10=>'File already exists.', 11=>'Can\'t open file.', 14=>'Malloc failure.', 18=>'Invalid argument.', 19=>'Not a zip archive.', 21=>'Zip archive inconsistent', ); return array_key_exists($code,$errorCode) ? $errorCode[$code] : '未知错误'; } /** * 格式化 时间戳和微秒数 * @param $microtime * @return mixed */ protected function formatMicotime($microtime){ list($usec,$sec) = explode(' ',$microtime); return $sec+$usec; }}try{ //需要打包zip的目录 $dist = './'; //打包后的zip文件名称 $zipFile = 'web.zip'; //实例化类 $zip = new zip(); //开始打包zip $zip->index($dist ,$zipFile);}catch (Exception $e){ exit($e->getMessage());}使用方法
把代码复制,保存到一个PHP文件里,例如放置到根目录下:/zip.php,最后在浏览器运行文件 即可。
记得修改代码里的:$dist 和 $zipFile 为自己的文件夹目录。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #php复制文件夹到另外一个地方 #php打包 #php压缩文件浏览器 #java压缩zip包 #phpziparchive压缩