這是一個真正的頭刮擦 - 任何幫助將受到感謝。PHP ZipArchive無法正確提取CSV文件
我一直在使用zipArchive庫從zip中提取csv文件。
奇怪的是,它只能正確提取40個文件。索引爲40或更大的文件顯示爲空文件,文件0-39完美提取。
無論文件的組合和文件的大小如何,都是如此。我試過從zip中刪除第39個文件和第40個文件,問題就在移動。無論使用哪種文件組合,它都能正確提取40個文件,然後纔會死掉。
感謝這個論壇,我已經嘗試使用殼牌執行完全相同的結果。 我也嘗試一次提取一個文件,使用一個只有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);
}
}
}
您使用的是什麼版本的PHP? – user0000001
另外,如果是PHP相關問題,另一種可行的方法是使用'exec()'使用系統本地ZIP二進制文件。唯一的問題是,服務器上可能沒有ZIP處理程序。只是一個想法。 – user0000001
只是要確定 - 你是否嘗試通過其他存檔提取文件,並且它工作正常嗎? –