从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文件不被破坏?
由于
答案 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;