ziparchive를 사용하여 일부 파일의 zip을 만든 다음 다음 코드를 사용하여 파일을 다운로드해야합니다.zip 아카이브를 사용하여 PHP에서 유효한 zip 파일을 만들 수 없습니까?
if(count($valid_files > 0)){
$zip = new ZipArchive();
$zip_name = "pixels.zip";
if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){
$error .= "* Sorry ZIP creation failed at this time";
}
foreach($valid_files as $file){
$zip->addFile($file);
}
$zip->close();
if(file_exists($zip_name)){
// force to download the zip
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="'.$zip_name.'"');
ob_clean();
flush();
readfile($zip_name);
//remove zip file from temp path
unlink($zip_name);
}
} else {
echo "No valid files to zip";
exit;
}
$valid_files
완전한 파일 경로 각 요소 배열을 포함한다고 가정. 위의 코드는 파일을 포함하는 zip 파일을 생성 할 것으로 예상되지만 반대로 다운로드가 시작되면 마무리 크기 나 최대 크기없이 다운로드가 계속됩니다. 그리고 어떤 경우에는 파일이 다운로드 되더라도 파일을 압축 해제하려고 시도 할 때 잘못된 파일로 오류가 발생합니다. 문제를 이해할 수 없으면 어떤 도움도 크게 받으실 수 있습니다.
'$ error'에는 아무것도 포함되어 있지 않으십니까? – Jaime
때로는 파일이 적어도 다운로드되는 경우가 있습니까? 'unlink' 파일을 삭제하고 두 파일을 비교하면 어떻게됩니까? 그들은 같은가요? 서버 측 파일을 압축 해제 할 수 있습니까? 귀하의 발췌 문장은 나를 위해 okish 작동하는 것 같습니다. – delf
브라우저에서 header ("Content-length : $ size")와 같은 헤더를 추가하면 예상대로 진행률 막대가 표시됩니다. –