PHPによる圧縮データを制作して、ボタンをクリックすると圧縮データをダウンロードさせる仕組みを計画。

// 圧縮データをつくるとき
$zip = new ZipArchive(); // 以下省略

圧縮データを指定フォルダに保存し、ボタンクリックでその圧縮データをダウンロードするようにしたいのですが、それ自体は問題なかった。

ただ、ダウンロードしたものを解凍しようとするとエラーが発生して解答ができなかった。ちゃんと.zipという形式で出来上がっているデータなはずなんですが、拡張子がついただけでちゃんと処理が上手くいってなかった感じ。

しかし、FTPからダウンロードしたものをPC上で解凍することは可能でした。ブラウザを通して落とした圧縮データがダメだったということが分かり、圧縮作業自体には問題なさそう。

ということで、問題はダウンロードさせるプログラム部分を改修する必要がありそうで、最終的には以下の方法で上手くいきました。

ob_start(); // 追加
mb_http_output( "pass" );
header("Cache-Control: public");
header("Pragma: public");
header('Content-Type: application/force-download;');
header('Content-Length: '.filesize(folderpath/test.zip));
header('Content-Disposition: attachment; filename="test.zip"');
header('Content-Transfer-Encoding: binary');
ob_end_clean(); // 追加

readfile(folderpath/test.zip);
exit();