2012-06-28 14 views
0

Этот сценарий успешно создан ПРВ в папке TMP/....PHP выход пустого ZIP

Однако выход ZIP в браузер пуст, и я не знаю, что я сделал неправильно.

$file = tempnam("tmp", "zip"); 

$zip = new ZipArchive(); 

// Zip will open and overwrite the file, rather than try to read it. 
$zip->open($file, ZipArchive::OVERWRITE); 
foreach(explode(',', $_POST["ids"]) as $Client_ID) 
{ 
    $sql_qry="select * 
      from ca_client_statement 
      where client_id='".$Client_ID."' and trading_period_month like '".$TP_Month."'"; 
    $sql_err_no=sql_select($sql_qry,$sql_res,$sql_row_count,$sql_err,$sql_uerr); 

    //echo $sql_qry; 
    //echo '<br/>'; 
    $row = mysql_fetch_assoc($sql_res); 
    $file_content = $row['pdf_statement']; 
    $file_name = 'tmp/'.$Client_ID.'statement.pdf'; 
    $pdf=file_put_contents($file_name, $file_content); 
    $zip->addFile($pdf); 
} 

$zip->close(); 

// Stream the file to the client 
header("Content-Type: application/zip"); 
header("Content-Length: " . filesize($file)); 
header("Content-Disposition: attachment; filename=\"a_zip_file.zip\""); 
readfile($file); 

unlink($file); 

ответ

2

file_put_contents() возвращает количество байтов, а не имя файла. Попробуйте изменить линию сразу после этого:

$zip->addFile($file_name); 
+0

большое вам спасибо! его заставляли меня сходить с ума по часам – user1488434

+0

Есть ли способ генерировать pdf-файлы без временного хранения их в моем каталоге tmp? на лету, так сказать – user1488434

+0

@ user1488434: Я считаю, что вы можете пропустить запись временного файла и просто использовать '$ zip-> addFromString ($ Client_ID.'statement.pdf ', $ file_content);'. Посмотрите, работает ли это для вас. – Kaivosukeltaja

Смежные вопросы