2017-11-19 5 views
0

ZipArchiveクラスを使用してZIPファイルを作成し、クライアントにストリーム配信していますが、すべてのアーカイブが正しく生成されていません。ZipArchiveが壊れたファイルを送信しています

提案がありますか? (デビッドでwrited)

<?php 
if(file_exists('../../../thure/uploads/nestingen/58861.pdf')) 
{ 
    $files = array('../../../thure/uploads/nestingen/58861.pdf'); 
    $zipname = 'file.zip'; 
    $zip = new ZipArchive; 
    $zip->open($zipname, ZipArchive::CREATE); 
    foreach ($files as $file) { 
     $zip->addFile($file); 
    } 
    $zip->close(); 

    header('Content-Type: application/zip'); 
    header('Content-disposition: attachment; filename='.$zipname); 
    header('Content-Length: ' . filesize($zipname)); 
    readfile($zipname); 

    exit; 
} 
else 
{ 
    echo 'file not found'; 
} 
?> 

答えて

0

機能

/* creates a compressed zip file */ 
function create_zip($files = array(),$destination = '',$overwrite = false) { 
    //if the zip file already exists and overwrite is false, return false 
    if(file_exists($destination) && !$overwrite) { return false; } 
    //vars 
    $valid_files = array(); 
    //if files were passed in... 
    if(is_array($files)) { 
     //cycle through each file 
     foreach($files as $file) { 
      //make sure the file exists 
      if(file_exists($file)) { 
       $valid_files[] = $file; 
      } 
     } 
    } 
    //if we have good files... 
    if(count($valid_files)) { 
     //create the archive 
     $zip = new ZipArchive(); 
     if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { 
      return false; 
     } 
     //add the files 
     foreach($valid_files as $file) { 
      $zip->addFile($file,$file); 
     } 
     //debug 
     //echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status; 

     //close the zip -- done! 
     $zip->close(); 

     //check to make sure the file exists 
     return file_exists($destination); 
    } 
    else 
    { 
     return false; 
    } 
} 

使用例

$files_to_zip = array(
    'file1', 
    'file2', 
    'file3' 
); 
//if true, good; if false, zip creation failed 
$result = create_zip($files_to_zip,'my-archive.zip'); 
+0

これは、同じエラーイワンを与えます。 – Muiter

+0

エラー出力を追加できます –

+0

画面の出力にエラーはありませんが、ダウンロードしたzipファイルにはTSを参照してください。 – Muiter

関連する問題