私は、自動抽出のためにサーバーにアップロードされたzipファイルを持っています。zipファイルをフォルダのルートに抽出しますか?
zipファイルの構造は、このようなものです:現在、私はJPGの拡張子を持つすべてのファイルを抽出するには、この機能を持っている
/zip_file.zip/folder1/image1.jpg
/zip_file.zip/folder1/image2.jpg
/zip_file.zip/folder1/image3.jpg
:
$zip = new ZipArchive();
if($zip->open($file_path)){
$files = array();
for($i = 0; $i < $zip->numFiles; $i++){
$entry = $zip->statIndex($i);
// is it an image?
if($entry['size'] > 0 && preg_match('#\.(jpg)$#i', $entry['name'])){
$f_extract = $zip->getNameIndex($i);
$files[] = $f_extract;
}
}
if ($zip->extractTo($dir_name, $files) === TRUE) {
} else {
return FALSE;
}
$zip->close();
}
しかし、機能extractTo
を使用しての、それは意志myFolder
にffとして抽出:
/myFolder/folder1/image1.jpg
/myFolder/folder1/image2.jpg
/myFolder/folder1/image3.jpg
folder1のファイルをmyFolderのルートに展開する方法はありますか?
理想:
/myFolder/image1.jpg
/myFolder/image2.jpg
/myFolder/image3.jpg
PS:競合ファイル名の包み私はファイルのみを抽出したり、上書きしないようにする必要があります。
このソリューションは、さまざまなサブディレクトリに重複した名前のファイルが上書きされます。 – shelhamer
ありがとう@Fabianius –
ありがとうございますhttp://php.net/manual/en/ziparchive.extractto.php#100802ここでは、リソースがどこにあるかを理解しようとすると、 'zip://'プロトコル誰かがそれについてのref urlを持っていますか? – blamb