PHP为仅文件特定扩展名创建一个Zip存档
Posted
技术标签:
【中文标题】PHP为仅文件特定扩展名创建一个Zip存档【英文标题】:PHP Create a Zip archive for file only particular extension 【发布时间】:2017-10-13 05:46:32 【问题描述】:在我的情况下,如何为仅文件特定扩展名创建 Zip 存档 .TIF .JPG .TXT
【问题讨论】:
你能进一步解释你在这里想要达到的目标吗?另外,到目前为止,您尝试过什么? 【参考方案1】:目前我在代码中添加了单个扩展,您可以稍后对其进行修改。
<?php
/* creates a compressed zip file */
function create_zip($files = array(), $destination = '', $overwrite = false)
//if the zip file already exists and overwrite is false, return false
if (file_exists($destination) && !$overwrite)
return false;
//vars
$valid_files = array();
//if files were passed in...
if (is_array($files))
//cycle through each file
foreach ($files as $file)
//make sure the file exists
if (file_exists($file))
$valid_files[] = $file;
//if we have good files...
if (count($valid_files))
//create the archive
$zip = new ZipArchive();
if ($zip->open($destination, $overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true)
return false;
//add the files
foreach ($valid_files as $file)
$zip->addFile($file, $file);
//debug
//echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
//close the zip -- done!
$zip->close();
//check to make sure the file exists
return file_exists($destination);
else
return false;
//your directory path where all files are stored
$dir = 'D:\xampp\htdocs\samples\zip';
$files1 = scandir($dir, 1);
// $ext = "png"; //whatever extensions which you want to be in zip.
$ext = ['jpg','tif','TXT']; //whatever extensions which you want to be in zip.
$finalArray = array();
foreach ($files1 as $key => $value)
$getExt = explode(".", $value);
if ( in_array($getExt[1] , $ext) )
$finalArray[$key] = $value;
$result = create_zip($finalArray, 'my-archive' . time() . '.zip');
if ($result)
echo "Operation done.";
?>
我认为这就是你想要的。 如果您有任何问题,请告诉我。
【讨论】:
以上是关于PHP为仅文件特定扩展名创建一个Zip存档的主要内容,如果未能解决你的问题,请参考以下文章