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();