試圖獲得導入/導出功能。ZipArchive無法解壓ZipArchive在PHP中拉鍊的文件
- 包含一個文件
- 使用ZipArchive
- 解壓使用ZipArchive
新文件夾中創建壓縮文件夾郵編PHP中的文件夾中的文件夾,但裏面的文件丟失
function unArchive(){ $zip = new ZipArchive; $res = $zip->open('zipTest.zip'); if ($res === TRUE) { echo 'ok'; $zip->extractTo("testfolder2"); $zip->close(); } else { echo 'failed, code:' . $res; } } function Zip($source, $destination){ if (!extension_loaded('zip') || !file_exists($source)){ return false; } $zip = new ZipArchive(); if (!$zip->open($destination, ZIPARCHIVE::CREATE)) { return false; } $source = str_replace('\\', '/', realpath($source)); if (is_dir($source) === true){ $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); foreach ($files as $file){ $file = str_replace('\\', '/', 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(); } Zip("testfolder/" , "./zipTest.zip"); unArchive();
代碼適用於單個文件。 使用ZipArchive壓縮文件,我可以使用WinRAR手動解壓縮,然後使用WinRAR重新壓縮,然後ZipArchive可以成功解壓縮該文件。 問題是ZipArchive不會提取它直接壓縮的壓縮文件。 我還可以在Notepad ++中看到,ZipArchive zip與WinRAR zip不同,文件大小也不同。我可以成功地將winrar作爲一個系統命令在PHP中調用所需的功能,但這似乎是一個糟糕的主意。 ZipArchive創建無法提取的zip文件是否有某些原因?
錯誤消息:ZipArchive :: extractTo():; 「」 在[文件]參數無效線[$ zip-> extractTo( 「testfolder2」)]
你有沒有得到過這個答案,我在Windows上遇到同樣的問題 – Bren1818
'testfolder2'文件夾已經存在嗎?如果不是,那麼你可能需要先創建一個→if(!file_exist('testfolder2')){mkdir('testfolder2',0777)}' –