目前,當涉及到多個小文件時,FTP在我們的服務器上非常慢。php遞歸壓縮?
我想創建一個文件,我可以在創建zip文件的瀏覽器中運行該文件。
基本上這個文件將坐/ htdocs目錄
zip文件中它創建必須採取/ htdocss(和子文件夾ECT)的所有文件和模仿的結構。
任何人都可以指向正確的方向嗎?
我正在嘗試使用下面的代碼。
唯一的問題是, 我得到一些空白文件夾
說,該文件是:
C:/xampp/htdocs/booking/zip.php
我得到 /C
/C/XAMPP
/C/xampp/htdocs
/C/xampp/htdocs/booking
/C/xampp/htdocs/booking/image.png
/C/xampp/htdocs/booking/index.php
我不想/C/xampp/htdocs/booking
我只想zip文件包含 image.png 的index.php
如何解決這個?
<?php
function Zip($source, $destination) {
if(extension_loaded('zip') === true) {
if(file_exists($source) === true) {
$zip = new ZipArchive();
if($zip->open($destination, ZIPARCHIVE::CREATE) === true) {
$source = realpath($source);
if(is_dir($source) === true) {
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
foreach($files as $file) {
$file = realpath($file);
if(is_dir($file) === true) {
$zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
} else if(is_file($file) === true) {
$zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
}
}
} else if(is_file($source) === true) {
$zip->addFromString(basename($source), file_get_contents($source));
}
}
return $zip->close();
}
}
return false;
}
Zip(dirname(__FILE__), 'testzip.zip');
?>
Windows或* NIX?雖然PHP具有本機ZIP支持,但如果可用,調用操作系統的「zip」命令可能更容易。 – deceze 2010-12-22 02:28:14