Yii-下载的zip文件已损坏


Yii - Downloaded zip file is corrupted

从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文件就不会损坏?

感谢

这解决了问题

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;