zip展開@動画サイトへの道

zipでUPされたときに自動的に展開して動画とか音楽ファイルを抜き出したいので、unzip関数を作って実装…
できるだけUnixwindowsで差異を無くしたいので、unzipコマンドを利用することに



windows版のunzipコマンドに展開先ディレクトリを指定できない問題
→カレントディレクトリを変えて展開するが、無理矢理感が…
info-unzipから持ってきたバイナリはディレクトリ名が小文字で圧縮しても大文字で展開されるし、日本語のディレクトリ名に対応していない?のか、ディレクトリパスに上限があるのか、うまいこと展開できない場合があった。



(試行錯誤)



PHP側でZIPを扱えないか調べてみたらあった。
なん…だとwwww
今までの試行錯誤はなんだったんだと言わんばかりのこの表情 �堯福�A゜;
とりあえず、試してみよう。




できた。zipファイルを展開できた。
とりあえず、zipの展開ができたので、動画・音楽ファイルを検索しよう

↓ソース

    protected function unzip($filepath, $mode) {

        if ($mode === self::DECOMPRESS_SUBDIR) {
            $dirpath = $filepath . "_dec";
            if (file_exists($dirpath) === false) {
                mkdir($dirpath);
            }
            $filename = basename($filepath);
            $toFilePath = $dirpath . '/' . $filename;
            if (rename($filepath, $toFilePath) === false) {
                return false;
            }
            $filepath = $toFilePath;
        }
        $dirpath = dirname($filepath);
        $zip = new ZipArchive;
        if ($zip->open($filepath) === false) {
            return false;
        }
        $zip->extractTo($dirpath . '/');
        $zip->close();

        return $dirpath;
    }