🤐

【FTPアップロード高速化】同階層のZIPファイルを一括解凍するPHP

2024/03/27に公開

FTPでアップロードしたZIPファイル一括解凍

アクセスすると同階層のzipファイルすべてを解凍してくれる(全zipの解凍が終わるまで開いたままにしておくこと)。大量データを速くアップロードしたい時に。ローカルでzip圧縮したデータとこのunzip.phpをアップしアクセスする。

unzip.php

<?php
$directoryPath = './'; // 解凍したいzipファイルがあるディレクトリを指定。

function unzip($zip_file){
    return shell_exec("unzip $zip_file");
}

$files = glob($directoryPath . '*.zip'); // 指定したディレクトリ内のzipファイルをすべて取得。

foreach ($files as $file) {
    if(is_file($file)) {
        if($zip = unzip($file)){
    echo "Zip解凍<br />\n";
            echo "対象ファイル:$file<br />\n";
            echo "<pre>$zip</pre>\n";
            echo "$file: は正常に解凍されました。<br />\n";
} else{
            echo("Failed to extract: $file\n");
        }
    }
}
?>

おまけ・自動インデックス表示

その階層のディレクトリを自動で表示しリンク化してくれる

index.php

<html lang="ja">
<?php
$dir = opendir('.');
echo "<ul>";
while (($file = readdir($dir)) !== false) {
    if ($file != "." && $file != ".." && is_dir($file)) {
        echo "<li><a href='$file'>$file</a></li>";
    }
}
echo "</ul>";
closedir($dir);
?>
</html>

Discussion