在PHP某些版本中,使用ZipArchive addFile方法添加中文文件名的文件时出错(return false),处理方式:
把文件重命名,再添加,addFile的第二个参数用原来的文件名即可,具体代码如下:
$zipFilePath = $path.uniqid().'.zip';
//压缩文件
$zip = new \ZipArchive();
// 打开一个zip文档,ZipArchive::OVERWRITE:如果存在这样的文档,则覆盖;ZipArchive::CREATE:如果不存在,则创建
$zip->open($zipFilePath, \ZipArchive::OVERWRITE | \ZipArchive::CREATE);
// 如果文件名是中文名则先转英文再添加到压缩包
$newFileName = $path.uniqid().'.csv';
rename($filePath, $newFileName);
$zip->addFile($newFileName, $fileName.'.csv');
$zip->close();
unlink($newFileName);
本文介绍了一种解决PHP中使用ZipArchiveaddFile方法压缩中文文件名时出现错误的方法。通过将中文文件名临时替换为英文名进行压缩,之后还原文件名,从而解决了这一问题。
1万+

被折叠的 条评论
为什么被折叠?



