2

このファイルcsvをzipした後にファイルcsvを作成し、ファイルzipをサーバーに保存したいと思います。私は次のようにコーディングします:

 foreach($list as $item)
        { 
            $csv .= join("\t", $item)."\r\n"; 
        }  

        $csv = chr(255).chr(254).mb_convert_encoding($csv,"UTF-16LE","UTF-8");

        header("Content-type: application/x-msdownload");
        header("Content-disposition: csv; filename=CSV_".date("YmdHis").".csv; size=".strlen($csv));

        $zip = new ZipArchive();
        $zip_name ="CSV_".$dateTimeNow.".zip"; // Zip name
        if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE)
        {                         
              $error .= "* Sorry ZIP creation failed at this time";
        }
        $zip->addFile($csv);
        $zip->close();

ファイルcsvは正常に作成されましたが、zipファイルと保存ファイルはまだ成功していません。手伝って頂けますか?ありがとう。

4

1 に答える 1

0

$zip->addFileはファイルを期待しているchr(255).chr(254).mb_convert_encoding($csv,"UTF-16LE","UTF-8")が返されたため、成功しません

ここに解決策があります

$csv = "ABC" ; // Define CSV to avoid notice error 
$csv = chr(255).chr(254).mb_convert_encoding($csv,"UTF-16LE","UTF-8");

header("Content-type: application/x-msdownload");
header("Content-disposition: csv; filename=CSV_".date("YmdHis").".csv; size=".strlen($csv));

$file_name =  "abc.csv";
file_put_contents($file_name, $csv); // dump csv to temp file 

$zip = new ZipArchive();
$zip_name = "CSV.zip" ; // Zip name
touch($zip_name);

if ($zip->open($zip_name) === TRUE) {
    $zip->addFile($file_name); // add the temp file to zip
    $zip->close();
} else {
     $error .= "* Sorry ZIP creation failed at this time";
}

unlink($file_name); // remove temp csv
于 2012-09-21T12:02:04.617 に答える