Php 如何在zip文件之后创建csv文件并在服务器上保存文件zip

Php 如何在zip文件之后创建csv文件并在服务器上保存文件zip,php,Php,我想在压缩此文件后创建一个文件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: app

我想在压缩此文件后创建一个文件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已创建ok,但zip文件和保存文件仍不完整。
你能帮助我吗?谢谢。

它不成功,因为
$zip->addFile
需要一个文件,但返回了
chr(255).chr(254).mb\u convert\u编码($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

它未成功,因为
$zip->addFile
需要一个文件,但返回了
chr(255).chr(254).mb\u convert\u编码($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

文件内容($file\u name,$csv);命令不创建临时文件。它显示下载文件abc.csv。html@mum我不知道你在文件末尾从哪里得到了
.html
。。。。。。。我运行了代码,它运行得非常好。代码:$filename='CSV\u 123.CSV“file\u put\u contents($file\u name,$CSV);但不要保存文件,它是“显示”对话框“保存文件CSV_123.CSV”。
$filename
$file_name
不同?如果您继续以这种方式更改内容,我不确定我是否能帮到您进一步的忙对不起,我已更改为$filename='CSV_123.CSV”;文件内容($filename,$csv);//创建临时文件,但仍然显示保存文件CSV\u 123.csvfile\u put\u内容的对话框($file\u name,$CSV);命令不创建临时文件。它显示下载文件abc.csv。html@mum我不知道你在文件末尾从哪里得到了
.html
。。。。。。。我运行了代码,它运行得非常好。代码:$filename='CSV\u 123.CSV“file\u put\u contents($file\u name,$CSV);但不要保存文件,它是“显示”对话框“保存文件CSV_123.CSV”。
$filename
$file_name
不同?如果您继续以这种方式更改内容,我不确定我是否能帮到您进一步的忙对不起,我已更改为$filename='CSV_123.CSV”;文件内容($filename,$csv);//创建临时文件,但仍显示保存文件CSV_123.CSV对话框