我从webservice(WSDL)收到大对象。其中一个位置是zip文件内容存储为base64字符串。我需要从这个zip中读取文件名和内容。
我写了这个:
$ePackageFile = $ePackage->ePackageFile;
$attachment = $this->mapper->mapEPackageFileData((array)$ePackageFile, false);
$limitMBs = 20 * 1024 * 1024;//20MB LIMIT !
$fp = fopen("php://temp/maxmemory:$limitMBs", 'r+');
fwrite($fp, base64_decode($attachment['attachment_fileContent']));
$zip = new ZipArchive;
$handler = $zip->open("php://temp");
if($handler === FALSE)
return array('status'=>false, 'result'=>'failed to get stream');
$i=0;
$out = array();
while (($file = $zip->getNameIndex($i)) && $file !== false) {
$out[] = array('filename' => $zip->getNameIndex($i), 'content' => $zip->getFromIndex($i));
$i++;
}
$zip->close();
但我仍然有“警告:ZipArchive :: getNameIndex():无效或整体化的Zip对象......”
我还使用以下方式检查了文件:
$fp = fopen('test.zip','a+');
fwrite($fp, base64_decode($attachment['attachment_fileContent']));
fclose($fp);
然后使用KEKA(成功)提取它。
你能帮助我使用包装器阅读内容吗?
编辑: 我收到错误代码11(无法打开文件)。
答案 0 :(得分:0)