我正在尝试将zip文件从本地服务器下载到HD。
$zip = new ZipArchive;
$zip->open($archive, ZipArchive::CREATE);
$files = scandir($dir);
unset($files[0], $files[1]);
foreach ($files as $file) {
$zip->addFile($dir.'/'.$file);
}
$zip->close();
$download=$archive;
header("Content-Disposition: attachment; filename=\"Reports". $stocktake_id. ".zip");
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
文件被下载但文件大小不正确,无法正常打开,说格式无效或文件已损坏。
答案 0 :(得分:0)
我认为你缺少内容类型标题。 另外,我没有看到你回复客户端的原始数据? 并且,确保没有调试输出或文件本身没有的任何内容。
//After you saved your file:
download_file_to_client($saved_file);
exit;
function download_file_to_client($file, $mime = 'application/zip')
{
$filesize = filesize($file);
header('Content-Type: '.$mime.';charset=utf-8');
header('Content-Disposition: attachment;filename="some-filename.zip"');
header('Pragma: no-cache');
header('Expires: 0');
header('Content-Length: ' . $filesize);
flush(); // Get the headers out immediately to prevent any delay in some browsers.
$fh = fopen($file, "r");
while ($fh && !feof($fh))
{
echo fread($fh, 8192);
}
fclose($fh);
}