
getNameIndex 메소드는 파일 이름을 인덱스에 매핑하는 배열을 반환합니다. 하지만 getFileIndex 메소드를 사용하여 파일 이름을 얻을 때, 파일 이름이 정확하게 매핑되지 않는 경우가 있습니다.
이러한 경우의 이유는 ZipArchive 클래스가 파일 이름을 인덱스에 매핑할 때, 파일 이름의 경로와 확장자를 제거하여 인덱싱을 수행하기 때문입니다.
예를 들어, "example/file.txt"라는 파일이 zip파일에 포함되어 있다면, getNameIndex 메소드는 "file.txt"라는 이름으로 인덱싱을 수행합니다. 하지만 getFileIndex 메소드를 사용하여 파일 이름을 얻을 때, "example/file.txt"라는 파일 이름이 반환됩니다.
이러한 경우를 예외처리하는 방법은 다음과 같습니다.
#hostingforum.kr
php
$zip = new ZipArchive;
if ($zip->open('example.zip') === TRUE) {
$nameIndex = $zip->getNameIndex();
foreach ($nameIndex as $index) {
$fileName = $zip->getNameIndex($index);
if ($zip->getFromIndex($index) !== false) {
// 파일 이름이 매핑된 경우
} else {
// 파일 이름이 매핑되지 않은 경우
}
}
$zip->close();
} else {
// 오류 처리
}
위 코드에서, getNameIndex 메소드를 사용하여 얻은 인덱스를 getFileIndex 메소드를 사용하여 파일 이름을 얻을 때, 파일 이름이 매핑되지 않은 경우를 예외처리합니다.
2025-05-19 16:36