2014-02-07 14 views
1

PHP로 압축 파일을 만들고 내 pdfs_lib 폴더에서 사용할 수있는 일부 pdf 파일을 추가하려고합니다. 아카이브를 성공적으로 만들었지 만 생성 된 zip 안에 문제가 있습니다. 아카이브, 파일은 pdfs_lib 폴더에 추가됩니다.php ZipArchive - 상위 폴더가 아닌 파일 만 추가합니다.

작성된 zip 아카이브의 pdfs_lib 폴더에있는 파일을 추가하는 대신 pdfs_lib 폴더에있는 pdf 파일을 아카이브에 직접 추가하려고합니다. 내가 시도 무엇

은 다음과 같습니다

// Create Zip File 
    $zip = new ZipArchive; 
    $res = $zip->open("pdfs_lib/my_zip_archive.zip", ZipArchive::CREATE); 
    if ($res === TRUE) 
    { 
     // Add pdf file to zip archive 
     $zip->addFile("pdfs_lib/pdf_file_1.pdf"); 
     $zip->addFile("pdfs_lib/pdf_file_2.pdf"); 

     $zip->close(); 
     echo 'ok'; 
    } else { 
     echo 'failed'; 
    } 

이 코드는 성공적으로 압축 아카이브를 생성하지만 난 아카이브의 압축을 풀고 whwen 그것은 pdfs_lib 폴더를 만들고 새로 만든 폴더 안에있는 모든 파일의 압축을 풉니 다.

pdf_lib 폴더를 추가하지 않고 zip 아카이브를 만드는 방법에 대한 제안. 에

답변

3

변경에게 addFile 전화 :

$zip->addFile("pdfs_lib/pdf_file_1.pdf", "pdf_file_1.pdf");

두 번째 매개 변수는 '의 localName'는 ZipFile를 자체에서 사용하는 이름입니다. 폴더 경로를 빠져 나가면 zip 파일의 루트에 추가됩니다.

1

안쪽이 아닌 쪽 : 일반적으로 보관 파일 (zip 또는 다른 보관 형식 일 수 있음)이 포함 된 파일을 모든 곳에서 처리하지 않고 깨끗한 폴더에 압축을 푸는 것이 좋습니다.

그러나 실제로이 폴더없이이 코드를 구현하려면 코드를 다시 작성해야합니다. 당신은 두 가지 대안이 있습니다

  1. 당신은 당신의 PHP 스크립트는 당신의 파일을 보관하는 폴더에서 실행되는 작업 디렉토리를 변경할 수 있습니다이 경우 당신은 집 압축 파일에 파일을 추가 할 수있는 경로가 필요하지 않습니다. 따라서 아카이브 내에 폴더가 생성되지 않습니다.

  2. addFile() phps zip 확장 방법을 사용하면 전달 된 파일의 대상 이름을 전달할 수있는 두 번째 (선택 사항) 인수를 지정할 수 있습니다.