Yii - 已下载的zip文件已损坏

时间:2014-11-05 17:50:13

标签: php yii zip httprequest

从Yii下载zip文件导致zip中的文件损坏。我可以打开zip,搜索其内容,但数据已损坏。在文件资源管理器中打开zip文件显示zip文件正常。该问题仅在下载文件时显示:

$zip = new ZipArchive();
if($zip->open($zipname, ZIPARCHIVE::CREATE)  === TRUE ){

    // add stuff to zip
    $res = $zip->addFile($a, $b);
}

Yii::app()->getRequest()->sendFile($zipname, file_get_contents($zipname), "application/zip", true);

我认为问题在于Yii的sendFile的$ content参数。

内容参数应该包含哪些内容,以便zip文件不被破坏?

由于

1 个答案:

答案 0 :(得分:1)

这解决了问题

header('Content-Description: File Transfer');
        header('Content-Type: application/zip');
        header('Content-Disposition: attachment; filename='.basename($zipname));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($zipname));
        ob_clean();
        flush();
        readfile($zipname);
        exit;