下記のソースであるディレクトリのファイルの全てをZIPに圧縮するプログラムを作ったのですが、それを解凍すると、同じファイルが2個、3個と増えて圧縮されてます(当然、対象のディレクトリ内には同一名のファイルは存在しません。)
原因などご存知のかたいらっしゃいますでしょうか?対象のディレクトリのパーティションは、0777にしてます。
※$fileNameに出力ファイル名、$dirに圧縮対象のディレクトリを指定してます。
File_Archive::extract(
File_Archive::read($fileName . '/'),
File_Archive::toArchive($dir, File_Archive::toOutput())
);
3つのファイルがあったとして、
./example/a
./example/b
./example/c
保存先を./example/zにしてしまうと…
1. aを zに格納
2. bと z(中身はa) を zに格納
3. cと z(中身はaとb)を zに格納
zには aが3つ、bが2つ、cが1つ・・・ということでは?
この場合の対策はアーカイブ保存先ををファイルのディレクトリ下には作成しないこと。
もしくは、
ワイルドカードでファイルタイプを制限すること。
File_Archive::extract(
File_Archive::read($dir . '/*.jpg'),
File_Archive::read($dir . '/*.png'),
File_Archive::read($dir . '/*.txt'),
File_Archive::toArchive($fileName, File_Archive::toOutput())
);
$fileNameと$dirの指定位置が間違っています。
下記のようにしてみて下さい。
File_Archive::extract(
File_Archive::read($dir),
File_Archive::toArchive($fileName, File_Archive::toOutput())
);
コメント(0件)