这是一个真正令人头疼的问题 - 任何帮助都将不胜感激。
我一直在使用 zipArchive 库从 zip 中提取 csv 文件。
奇怪的是,它只会正确提取 40 个文件。索引为 40 或更大的文件显示为空文件,文件 0-39 完美提取。
无论文件的组合和文件的大小如何,情况都是如此。我尝试从 zip 中删除第 39 个文件和第 40 个文件,但问题只是移动了。无论我使用什么文件组合,它都能正确提取 40 个文件,然后就死了。
感谢这个论坛,我尝试使用 Shell Exec 获得完全相同的结果。我还尝试一次提取一个文件,使用仅包含 csv 文件的 zip 和具有多种不同文件类型的 zip。总是只提取 40 个。
这是一个可疑的整数,它肯定是我找不到的某个地方的设置,或者是一个错误。
对于它的价值,解压缩代码如下:
$zip = new ZipArchive;
if ($zip->open('Directory/zipname.zip') == TRUE) {
for ($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
if(substr(strrchr($filename,'.'),1,3)=="csv")
{
$zip->extractTo('Directory/',$filename);
}
}
}
我还尝试了以下方法,它使用了不同的方法,结果相同:-(
$zip2 = new ZipArchive;
if ($zip2->open('Directory/zipname.zip') == TRUE) {
for ($i = 0; $i < $zip2->numFiles; $i++) {
$filename = $zip2->getNameIndex($i);
if(substr(strrchr($filename,'.'),1,3)=="csv")
{
$content=$zip2->getFromIndex($i);
$thefile=fopen("directory/filename","w");
fwrite($thefile,$content);
fclose($thefile);
}
}
}