PHP下载.zip文件但错误

时间:2014-06-18 12:16:40

标签: php

我正在尝试将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");

文件被下载但文件大小不正确,无法正常打开,说格式无效或文件已损坏。

1 个答案:

答案 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);
}