当前位置:Gxlcms > PHP教程 > php文件打压缩包

php文件打压缩包

时间:2021-07-01 10:21:17 帮助过:3人阅读

这篇文章主要介绍了关于php文件打压缩包,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

压缩目录下所有文件

为了方便以后重用,这里我写了三个函数,必须一起放到一个类下边,读者也可根据情况分开,但请注意更改方法调用的类名(这里都用的self)。

Question:这里我想只把当前路径下所有文件(包括文件夹)压缩到压缩包里,不想压缩多余的文件夹,不知道该怎么做,有望知情者告知,谢谢!

  1. /**
  2. * add path to zip
  3. * Here, I want to add all the files under the current path, but I don't know how to add it, I want to get help, thank you!
  4. * @param $path
  5. * @param $zip
  6. */
  7. public static function addDirectoryToZip($path, $zip)
  8. {
  9. self::createPath([$path, $zip]);
  10. $zipObj = new \ZipArchive();
  11. if ($zipObj->open($zip, \ZipArchive::CREATE) === TRUE) {
  12. $handler = opendir($path);
  13. while (($filename = readdir($handler))) {
  14. if ($filename != "." && $filename != "..") {
  15. $tem_path = $path . DIRECTORY_SEPARATOR . $filename;
  16. if (is_dir($tem_path)) {
  17. self::addDirectoryToZip($tem_path, $zip);
  18. } else {
  19. $zipObj->addFromString(iconv('gbk', 'utf-8', $tem_path), file_get_contents($tem_path));
  20. }
  21. }
  22. }
  23. @closedir($path);
  24. $zipObj->close();
  25. }
  26. } /**
  27. * Create a or more path
  28. * @param $path
  29. */
  30. public static function createPath($path)
  31. {
  32. if (is_array($path)) {
  33. foreach ($path AS $v) {
  34. if (!is_array($v)) {
  35. self::createOnePath($v);
  36. } else {
  37. die('Must be a one-dimensional array!');
  38. }
  39. }
  40. } else {
  41. self::createOnePath($path);
  42. }
  43. } /**
  44. * Create a path
  45. * @param $path
  46. */
  47. public static function createOnePath($path)
  48. {
  49. $path = strpos(basename($path), '.') ? dirname($path) : $path;
  50. if (!is_dir($path)) {//nonexistion path
  51. mkdir($path, 0777, true) ? '' : die('Creation path failed!');
  52. }
  53. }

相关推荐:

几行代码轻松实现PHP文件打包下载zip

PHP文件加锁确保多线程写入安全

以上就是php文件打压缩包的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行