2011-08-14 12 views
4

これは初めてPHPでZIPファイルを作成しようとしています。PHPでZipファイルを作成しますか?

私がやっていることは、PHPが特定のディレクトリ内のファイルを検索し、それらをすべて取得してZIPファイルに保存することです。 zipファイルは、ファイルをブラウザにダウンロードしてダウンロードします。私は非常に近いですが、私は特定の部分で立ち往生しています。クローズしようとしたとき、私は「閉じることはできません」というエラーを取得しています

$zip = new ZipArchive(); 
    if ($zip->open('test.zip', ZIPARCHIVE::CREATE) !== TRUE) { 
    die ("Could not open archive"); } 

    $myDirectory = opendir("../folder/plugins/".$id.""); 

    while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; } 
    closedir($myDirectory); 
    $indexCount = count($dirArray); 
    sort($dirArray); 
    for($index=0; $index < $indexCount; $index++) { 
    if (substr("$dirArray[$index]", 0, 1) != "."){ 

    $file = "".$myDirectory."".$dirArray[$index].".zip"; 

    $zip->addFile($file, $file) or die ("cant add file"); ; 
    echo $dirArray[$index]; echo '</br>'; 

    }} 

    $zip->close()or die("cant close"); 

は、ここに私のコードです。ここで私を助けてください、私は自分のコードで間違っているものを見つけることができません。

filename1.png 
    filename2.png 
    can't close 

:)

+0

あなたはgetStatusString' 'によって返されたエラー文字列で見たことがありますか? –

+0

一般に、いくつかのコードの改良点は、 '$ zip-> addFile($ file、$ file)またはdie(" cant add file ")です。 $ file = ""。$ myDirectory "。$ dirArray [$ index]。"。zip ";"は、$ file = "$ {myDirectory} $ {dirArray [$ index]} .zip'です。一般に、読みやすさのために 'echo $ dirArray [$ index]; echo '
';'のように1行にコード行を組み合わせることはお勧めできません。 –

答えて

4

は、次の行を確認:

$zip->addFile($file, $file) 

これはあなたが本当に達成したいものですが印刷され何ですか?ここで

0

は、私はそれが働いて得た方法である:

<?php 

     $dirArray = array(); 

     /* creates a compressed zip file */ 
     $zip = new ZipArchive; 
     if ($zip->open('dataminefiles.zip', ZIPARCHIVE::CREATE) !== TRUE) { 
      die ("Could not open archive"); 
     } 
     // open the current dir 
     if ($handle = opendir('.')) { 
     while (false !== ($entry = readdir($handle))) { 
      // ignore hidden files   
      if ($entry != "." && $entry != "..") { 
      // only zip specific files 
       if (substr($entry,-3,3) == "jpg" || substr($entry,-3,3) == "pdf" || substr($entry,-3,3) == "lsx" || substr($entry,-3,3) == "xls" || substr($entry,-3,3) == "doc" || substr($entry,-3,3) == "txt" || substr($entry,-3,3) == "png" || substr($entry,-3,3) == "gif" || substr($entry,-3,3) == "peg") { 
        // if allowed, add them to the array 
        $dirArray[] = $entry; 
       } 
      } 
     } 
     closedir($handle); 
    } 

     $indexCount = count($dirArray); 
     sort($dirArray); 
      // loop through the files and add them to the zip file 
     for($index=0; $index < $indexCount; $index++) { 
       $file = "{$dirArray[$index]}"; 
       $zip->addFile($file, $file); 
     } 
    // close the zip file 
     $zip->close(); 

    ?> 
関連する問題