$ipaFile= '/path/file.ipa';
$iconFilePath = "Payload/myapp.app/AppIcon40x40@2x.png"; // the pathway to my image file if the ipa file is unzipped.
$iconFile = "AppIcon40x40@2x.png";
$iconSaveFile = '/path/';
$zip = new ZipArchive();
if ($zip->open($ipaFile) === TRUE) {
if($zip->locateName($iconFilePath) !== FALSE) {
$zip->extractTo($iconSaveFile, $iconFile);
}
}
我的目的是深入到这个压缩文件,只拉出一个图像文件.代码原样在我希望它进入的目录中创建一个新的图像文件(它创建的文件具有正确的名称和扩展名,但它是空白的,0字节).
如果我将$iconFile更改为iconFilePath,那么PHP正确地提取整个路径.在路径的最后是我想要的文件(只提取单个文件),并且它被正确提取.但是,我不希望提取文件前面的文件夹,只需要提取一个文件.
总而言之,我可以正确地提取整个zip存档,我可以正确提取单个文件,但也提取到文件的文件路径,但我无法正确提取单个文件.
解决方法:
ZipArchive :: extractTo()提取整个文件夹结构;你有没有试过ZipArchive::getFromName()
,听起来它可能效果更好?
$ipaFile= '/path/file.ipa';
$iconFilePath = "Payload/myapp.app/AppIcon40x40@2x.png"; // the pathway to my image file if the ipa file is unzipped.
$iconFile = "AppIcon40x40@2x.png";
$iconSaveFile = '/path/';
$zip = new ZipArchive();
if ($zip->open($ipaFile) === TRUE) {
if($iconData = $zip->getFromName($iconFilePath)) {
file_put_contents("$iconSaveFile$iconFile", $iconData);
}
}