編輯:這個問題在下面回答。如果你想ZIP的目錄/文件夾就像我所做的,看到這個:How to zip a whole folder using PHP文件添加到現有的ZIP文件
我有一個應用程序自動從我的服務器下載一個ZIP文件的計時器。
但ZIP文件每天都被改變了。
當有人使用的應用程序,因爲去除ZIP文件並重新添加(因爲應用程序定時器每900毫秒執行的是)的應用程序的用戶將得到一個「550文件不可用」錯誤。
所以不是刪除ZIP文件,並用新的數據重新創造它,如何添加,而無需重新創建ZIP文件中的新數據?
目前我使用這個:
$zip = new ZipArchive;
// Get real path for our folder
$rootPath = realpath('../files_to_be_in_zip');
// Initialize archive object
$zip = new ZipArchive();
$zip->open('../zouch.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();
而這個代碼得到files_to_be_in_zip
文件夾的內容,並重新使用它創建了「zouch.zip」文件。
是的,我知道新的數據FULLPATH ......這是$recentlyCreatedFile
編輯:我發現這個代碼在http://php.net/manual/en/ziparchive.addfile.php
<?php
$zip = new ZipArchive;
if ($zip->open('test.zip') === TRUE) {
$zip->addFile('/path/to/index.txt', 'newname.txt');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
?>
但我想創建一個目錄現有的ZIP也是如此。
任何幫助嗎?
謝謝!
卸下'ZipArchive :: CREATE | ZipArchive :: OVERWRITE'參數修復了一切!非常感謝:-) – MatrixCow08
高興地幫助,感謝您及時接受答案。 – coderodour