PHP создать Zip-архив для файла только с определенным расширением

Как создать Zip архив для файла только с определенным расширением в моем случае .TIF .JPG .TXT

2

Решение

В настоящее время я добавил отдельные расширения в коде, вы можете изменить его позже.

<?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.";
}
?>

Я думаю, что это то, что вы хотите.
дайте мне знать, если у вас есть какие-либо проблемы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]