2014-02-07 158 views
1

我PHP創建一個zip壓縮包,並想加入我的pdfs_lib folder.I已成功創建存檔可用某些PDF文件,但有一個問題父文件夾的創建ZIP內歸檔,文件被添加到pdfs_lib文件夾,這不是我想要的。PHP的ZipArchive - 只添加的文件不

我想目前在pdfs_lib文件夾中的PDF文件直接添加到檔案中,而不是在我創建zip壓縮包添加pdfs_lib文件夾中的這些文件。

我曾嘗試是:

// 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'; 
    } 

此代碼成功地創建了zip壓縮包,但whwen我解壓存檔它創建一個文件夾pdfs_lib並解壓這個新創建的文件夾內的所有文件。

關於如何創建沒有把它添加pdf_lib文件夾中的zip壓縮包的任何建議。

回答

3

更改addFile來電:

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

第二個參數是 '的localName',在zip文件本身使用的名稱。如果您在那裏忽略文件夾路徑,它將被添加到zipfile的根目錄中。

1

A面不作爲到:它通常被認爲是好的做法,如果歸檔(無論是壓縮或任何其它歸檔格式)解壓縮到一個乾淨的文件夾,而不是亂拋垃圾所包含的文件所有的地方。

但是,如果你真的想實現這個沒有這樣的文件夾,則必須返工你的代碼。你有兩個選擇:

  1. 你可以改變你的PHP腳本在執行到您保存文件在該文件夾的工作目錄。在這種情況下,你不需要任何路徑將文件添加到壓縮存檔。 ,因此檔案內沒有構建文件夾。

  2. addFile() phps zip擴展的方法允許指定允許傳遞傳遞文件的目標名稱的第二個(可選)參數。