$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);
}
}
这是完全未经测试的代码,只是扔掉它!如果这不起作用,并且你知道所涉及的所有路径,你可以在提取后移动文件,不是吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。