6 ŞUBAT 2011, Pazar
Nasıl bütün bir klasörü kullanarak bir PHP zip
Stackoveflow burada belirli bir ZİP dosyası için bazı kodları buldum, ama ne kadar özel bir klasör?
Folder/
index.html
picture.jpg
important.txt
My Folder
, içinde dosyalar var. My Folder
sıkıştırma sonra ben de important.txt
hariç klasörün tüm içeriğini silmek istiyor.
Bu stack burada buldum
Yardımına ihtiyacım var. teşekkürler.
CEVAP
6 ŞUBAT 2011, Pazar
Kod 2015/04/22 güncellendi.
Bütün bir klasörü Zıp:
// Get real path for our folder
$rootPath = realpath('folder-to-zip');
// Initialize archive object
$zip = new ZipArchive();
$zip->open('file.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file)
{
// Skip directories (they would be added automatically)
if (!$file->isDir())
{
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) 1);
// Add current file to archive
$zip->addFile($filePath, $relativePath);
}
}
// Zip archive will be created only after closing object
$zip->close();
Hariç tüm dosyaları bütün bir klasör silmek Zip"": . important.txt
// Get real path for our folder
$rootPath = realpath('folder-to-zip');
// Initialize archive object
$zip = new ZipArchive();
$zip->open('file.zip', ZipArchive::CREATE | ZipArchive::OVERWRITE);
// Initialize empty "delete list"
$filesToDelete = array();
// Create recursive directory iterator
/** @var SplFileInfo[] $files */
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootPath),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($files as $name => $file)
{
// Skip directories (they would be added automatically)
if (!$file->isDir())
{
// Get real and relative path for current file
$filePath = $file->getRealPath();
$relativePath = substr($filePath, strlen($rootPath) 1);
// Add current file to archive
$zip->addFile($filePath, $relativePath);
// Add current file to "delete list"
// delete it later cause ZipArchive create archive only after calling close function and ZipArchive lock files until archive created)
if ($file->getFilename() != 'important.txt')
{
$filesToDelete[] = $filePath;
}
}
}
// Zip archive will be created only after closing object
$zip->close();
// Delete all files from "delete list"
foreach ($filesToDelete as $file)
{
unlink($file);
}
Bunu Paylaş:
Nasıl bütün konuları tamamlamak, Execu...
Nasıl bir yönlendirme sayfası jQuery k...
Nasıl bir metin veya resim şeffaf bir ...
Nasıl bağımlılıkları Maven kullanarak ...
Nasıl HTML kodu Sublime Text 2 kullana...