지퍼 압축 파일로 작업 할 때, 특히 다단계 디렉토리 구조가 포함 된 압축 패키지를 압축 할 때 대상 디렉토리가 존재하는지 확인하는 것이 매우 중요한 단계입니다. 그렇지 않으면 대상 경로가 존재하지 않기 때문에 파일이 실패 할 수 있습니다. 이 기사에서는 zip_read () 함수를 사용하여 zip 파일의 각 항목을 읽고 file_exists () 및 mkdir ()를 결합하여 필요한 디렉토리를 자동으로 작성하여 안정적인 파일 추출 프로세스를 달성하는 방법을 소개합니다.
PHP 환경에 지퍼 확장이 활성화되어 있는지 확인하십시오. 다음 코드를 사용하여 탐지 할 수 있습니다.
<?php
if (!class_exists('ZipArchive')) {
die('Zip 확장이 활성화되지 않았습니다');
}
?>
다음은 ZIP 파일에서 파일 및 디렉토리를 읽고 디렉토리 구조를 자동으로 작성하는 완전한 샘플 코드입니다.
<?php
$zipPath = 'example.zip'; // ZIP 파일 경로
$extractTo = 'output/'; // 디렉토리를 압축합니다
$zip = zip_open($zipPath);
if (!is_resource($zip)) {
die('열 수 없습니다 ZIP 문서');
}
while ($entry = zip_read($zip)) {
$entryName = zip_entry_name($entry);
$fullPath = $extractTo . $entryName;
// 디렉토리 경로를 가져옵니다
$dir = dirname($fullPath);
// 자동으로 디렉토리를 만듭니다
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
}
// 如果是문서,내용을 읽고 쓰십시오
if (zip_entry_open($zip, $entry, "r")) {
$content = zip_entry_read($entry, zip_entry_filesize($entry));
file_put_contents($fullPath, $content);
zip_entry_close($entry);
}
}
zip_close($zip);
?>
zip_open ()
zip 파일을 열고 리소스 핸들을 반환하는 데 사용됩니다.
zip_read () 및 zip_entry_name ()
압축 패키지의 항목을 zip_read ()로 하나씩 읽은 다음 Zip_entry_name ()을 사용하여 항목의 상대 경로를 얻습니다.
Dirname () 추출 디렉토리 경로
파일이든 디렉토리이든 Dirname ()을 사용하여 경로 부분을 추출한 다음 디렉토리가 있는지 확인하십시오.
file_exists ()는 mkdir ()와 함께 사용됩니다.
file_exists ()는 디렉토리가 이미 존재하는지 여부를 결정하는 데 사용됩니다.
mkdir ()는 세 번째 매개 변수를 사용하여 다단계 디렉토리를 재귀 적으로 만들기 위해 true를 설정합니다.
파일 컨텐츠 작성
현재 항목이 파일 인 경우 대상 경로에 열리고 읽고 서면으로 작성됩니다.
http://m66.net/files/archive.zip 에서 압축 패키지를 다운로드했다고 가정하십시오. 감압 후 원래 구조를 유지하려고합니다. $ zippath를 수정하면됩니다.
$zipPath = 'http://m66.net/files/archive.zip'; // 알아채다:zip_open 직접 사용은 지원되지 않습니다 URL,먼저 지역에 다운로드해야합니다
file_get_contents () 및 file_put_contents ()를 사용하여 파일을 로컬로 저장할 수 있습니다.
$tempZip = 'temp_archive.zip';
file_put_contents($tempZip, file_get_contents('http://m66.net/files/archive.zip'));
그런 다음 $ zippath를 $ tempzip 로 교체하십시오.
zip_read () , file_exists () 및 mkdir ()를 결합함으로써 경로의 존재하지 않는 오류에 대해 걱정하지 않고 zip 파일 컨텐츠 및 디렉토리 생성의 자동 추출을 효율적으로 구현할 수 있습니다. 이 방법은 특히 복잡한 디렉토리 구조를 갖춘 ZIP 파일을 배치 압축 압축에 특히 적합하여 스크립트 견고성 및 유용성을 향상시킵니다.