PHP zipファイルのダウンロード
下記のようなPHPスクリプトにおいて、zip フォルダに画像ファイルの圧縮ファイルを
保存し、ダウンロードしたいんです。ダウンロードの動作はChrome上で確認できてますが、圧縮した、ダウンロードファイルのサイズが0KB で、空なのです。
どこが間違っているか教えていただけますか?
[file_zip.php]
<?php
mb_internal_encoding("UTF-8");
$ftp = ftp_connect("~");
ftp_login($ftp, "~", "~");
$dir = '/storage2/zip';
ftp_chdir($ftp, $dir); // ディレクトリ移動
// Zipクラスロード
$zip = new ZipArchive();
// Zipファイル名
$zipFileName = $_POST['zip_filename'];
var_dump($zipFileName);
// Zipファイル一時保存ディレクトリ
$zipTmpDir = '/storage2/zip';
// Zipファイルオープン
$result = $zip->open($zipTmpDir.$zipFileName, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if ($result !== true) {
// 失敗した時の処理
echo '圧縮ファイルをオープンできませんでした';
exit();
}
// ここでDB等から画像イメージ配列を取ってくる
$image_data_array = array();
array_unshift($image_data_array, $zipTmpDir.$zipFileName);
// 処理制限時間を外す
set_time_limit(0);
foreach ($image_data_array as $filepath) {
$filename = basename($filepath);
// 取得ファイルをZipに追加していく
$zip->addFromString($filename,file_get_contents($filepath));
}
$zip->close();
// ストリームに出力
header('Content-Type: application/zip; name="' . $zipFileName . '"');
header('Content-Disposition: attachment; filename="' . $zipFileName . '"');
header('Content-Length: '.filesize($zipTmpDir.$zipFileName));
echo file_get_contents($zipTmpDir.$zipFileName);
// 一時ファイルを削除しておく
unlink($zipTmpDir.$zipFileName);
// header("Location: storage.php");
?>