我有问题要提取从base64
数据创建的zip文件
这是我的剧本
<?
$basedata = base64_decode($data['data']);
$f = fopen ("c:/xampp/htdocs/sms/basedata/data.zip","x+");
fwrite($f, $basedata);
fclose($f);
$zip = new ZipArchive();
$res = $zip->open('c:/xampp/htdocs/sms/basedata/data.zip');
if ($res === TRUE) {
// extract it to the path we determined above
$zip->extractTo("c:/xampp/htdocs/sms/basedata/extracted");
$zip->close();
echo "Success!";
} else {
echo "Failed!";
}
}
?>
首先,我从zip
和fopen
命令创建fwrite
文件
然后创建Zip文件
并且该zip文件的内容是文件命名数据,这个文件实际上是xml
文件
这个xml
数据来自解码的base64数据,然后编码为zip
当我想用$res = $zip->open('c:/xampp/htdocs/sms/basedata/data.zip');
命令解压缩zip文件时,它无法运行,因为zip文件实际上不是zip存档
我认为PHP只能读取zip存档,而不是编码为zip的文件
任何人都可以帮助我?
答案 0 :(得分:0)
使用 addFromString :
功能$basedata = base64_decode($data['data']);
$zip = new ZipArchive;
$res = $zip->open('c:/xampp/htdocs/sms/basedata/data.zip', ZipArchive::CREATE);
if ($res === TRUE) {
$zip->addFromString('basedata.txt', $basedata);
$zip->extractTo("c:/xampp/htdocs/sms/basedata/extracted");
$zip->close();
echo 'ok';
} else {
echo 'failed';
}