사용자가 다운로드 할 수 있도록 PHP로 zip 파일을 만듭니다. PHP 나 zipArchive 클래스의 GetStatusString 함수를 검사하는 데 오류가 없습니다. 하지만 파일을 압축 파일에 넣으면 열려고 할 때 "압축 된 (압축 된) 폴더가 잘못되었거나 손상되었습니다"라는 오류 메시지가 나타납니다. 내가 추가하고있는 모든 파일을 검사했는데 모두 좋다. 내가 생각할 수있는 유일한 것은 큰 파일이 문제를 일으키는 것입니다. 그러나 "큰"파일의 크기는 약 0.5 메가 바이트 밖에되지 않으며 zipArchive의 파일 크기 제한에 대한 문서는 찾을 수 없습니다. 시도 할 다른 것들에 대한 생각, 그래서이 문제를 추적 할 수 있습니까? 감사.PHP의 zipArchive 클래스의 크기 제한?
편집 : 문제를 일으키는 특정 파일로 범위를 좁혔습니다. 그 크고 큰 작품들도 있으므로 생각을 버리십시오. 여기서 잘 작동 파일명 예 :
627 Jane.CCD.pdf는
712 Example_DrNotes.pdf
625 Jane.Labs2.pdf
예 상속 파일명에 공백이있다 .. 코드 문제.
623 Jane.Labs.pdf는 파일 이름 문제가 될 수 있었던 것처럼
가 보이지 않는다 : 여기에 작동하지 않는 파일 이름입니다. 이것은 결국 웹을 통해 이루어질 것이지만 서버에서 생성 된 실제 zip 파일을 검사하고 있습니다. 오류가 발생하는 곳입니다.$zip = new ZipArchive();
$zfileName = $GLOBALS["localUploadRoot"] . $zfile;
$requests = $this->getRequests(true);
foreach ($requests AS $r) {
if (file_exists($GLOBALS["localInboundRequests"] . $r["file"])) {
$zip->addFile($GLOBALS["localInboundRequests"] . $r["file"], $r["file"]);
}
}
$zip->close();
편집 : 2 : 가 미안 해요, 난 파일을 게시 할 수 없습니다
여기에 코드입니다. 그것에는 개인 정보가 들어 있습니다.
아마도 zip 파일을 빌드하는 코드의 관련 포턴을 게시해야합니다. 확실히 500K 파일은 문제를 일으키지 않습니다. – Artefacto
생성 프로세스가 실제로 완료됩니까? 추가 할 파일의 코드 및 예제 파일 이름을 표시 할 수 있습니까? 특수 문자가있는 이름을 사용하지 않습니다. –
CLI 또는 웹? 먼저 디스크에 저장하거나 직접 클라이언트에 스트리밍 하시겠습니까? (후자 인 경우 zlib 압축을 사용하지 마십시오.) – Matthew