PHP analiza el paquete ipa para obtener el logotipo

La siguiente es una versión antigua del tutorial. Para ser compatible con laravel6.0, el autor tiene una nueva dirección de desarrollo.

https://github.com/madnest/madzipper

Utilice el siguiente método para volcar el contenido del paquete comprimido en el directorio especificado 

Madzipper::make('test.zip')->folder('src')->extractMatchingRegex($path, '/^(?!.*test\.php).*$/i');

Utilice principalmente la siguiente lógica para obtener el archivo plist 

$ipaInfo['CFBundleIcons']['CFBundlePrimaryIcon']['CFBundleIconFiles'] prefijo del logotipo
// Recorriendo los archivos Info.plist en el paquete zip $zipFiles = Zipper::make($this->targetFile)->listFiles('/Info\.plist$/i'); $matched = 0; if ($zipFiles) { foreach ($zipFiles as $k => $filePath) { // Regex coincide con el archivo Info.plist en el directorio raíz del paquete if (preg_match ("/Payload\/([^\/]*) \/Info\.plist$/i", $filePath, $matches)) { $matched = 1; $this->app_folder = $matches[1]; // Extraiga el archivo plist al directorio del nombre del paquete correspondiente en el directorio ipa Zipper::make($this->targetFile)->folder('Payload/'.$this->app_f old)->extractMatchingRegex(storage_path('app/public/'.env( 'APP_ENV', 'local').'/upload/plist/'.$this->app_folder), "/Info\.plist$/i"); // La ruta completa de empalme de archivos plist $fp = storage_path('app/public/'.env('APP_ENV', 'local').'/upload/plist/'.$this->app_folder.'/Info.plist'); // Obtener el contenido del archivo plist $content = file_get_contents($fp); // Analizar plist en una matriz $ipa = new \CFPropertyList\CFPropertyList(); $ipa->parse($contenido); $ipaInfo = $ipa->toArray(); // ipa desempaqueta la información $this->ipa_data_bak = json_encode($ipa Info); // nombre del paquete $this->package_name = $ipaInfo[ 'CFBundleIdentifier']; // nombre de la versión $this->version_name = $ipaInfo['CFBundleShortVersionString']; // número de versión $this->version_code = str_replace('.', '', $ipaInfo['CFBundleShortVersionString']) ; // alias $this->bundle_name = $ipaInfo['CFBundleName']; // nombre para mostrar $this->display_name = $ipaInfo['CFBundleDisplayName']; } } }$ipaInfo['CFBundleShortVersionString']); // alias $this->bundle_name = $ipaInfo['CFBundleName']; // nombre para mostrar $this->display_name = $ipaInfo['CFBundleDisplayName']; } } }$ipaInfo['CFBundleShortVersionString']); // alias $this->bundle_name = $ipaInfo['CFBundleName']; // nombre para mostrar $this->display_name = $ipaInfo['CFBundleDisplayName']; } } }$ipaInfo['CFBundleShortVersionString']); // alias $this->bundle_name = $ipaInfo['CFBundleName']; // nombre para mostrar $this->display_name = $ipaInfo['CFBundleDisplayName']; } } }$ipaInfo['CFBundleShortVersionString']); // alias $this->bundle_name = $ipaInfo['CFBundleName']; // nombre para mostrar $this->display_name = $ipaInfo['CFBundleDisplayName']; } } }$ipaInfo['CFBundleShortVersionString']); // alias $this->bundle_name = $ipaInfo['CFBundleName']; // nombre para mostrar $this->display_name = $ipaInfo['CFBundleDisplayName']; } } }$ipaInfo['CFBundleShortVersionString']); // alias $this->bundle_name = $ipaInfo['CFBundleName']; // nombre para mostrar $this->display_name = $ipaInfo['CFBundleDisplayName']; } } }

Luego use el prefijo para que coincida con el archivo del paquete comprimido

preg_match("/Carga útil\/([^\/]*)\/Info\.plist$/i", $filePath, $coincidencias

Requisitos previos: la versión de Laravel debe ser superior a 5
1. Utilice Composer para importar

el compositor requiere chumper/zipper
2, app/config/app.php

'providers'=>[
    Chumper\Zipper\ZipperServiceProvider::class
]
 'aliases' => [
    'Zipper' => Chumper\Zipper\Zipper::class
]
3. Los archivos comprimidos
***** deben usar archivos de citas

    use Chumper\Zipper\Zipper;
    $number=1;
    $zip=new Zipper();
    $newName='group_'.$number.'.zip'; $
    zip->make(public_path('vdieoZip/'.$newName))->add($res); $zip->
    close();
    return response()->download(public_path(' vdieoZip/'.$newName));
4. Descomprima el archivo
***** debe usar use citation archivo

    use Chumper\Zipper\Zipper;
    $zip = new Zipper();
    $zip->make(directorio de archivos comprimidos)->extractTo(directorio comprimido);
5: recorrer los archivos y empaquetarlos en paquetes comprimidos

    $archivos = Array();
            foreach ($estudiante as $clave => $datos) {                 if ($datos->fotoruta != null) {                     $verificar = glob(storage_path('foto/' . $datos->fotoruta));                     $archivos = array_merge($archivos, $cheque);                 }             }      Zipper::make(storage_path() . '/systemImg/' . $name)->add($files)->close();





6: Lea el archivo del paquete comprimido

$cadena);                         }                     } más {










                        return '{"statusCode":"300", "message":"Falló la carga, verifique la foto"}';
                    }

 

La referencia es el artículo de la comunidad de laravel.

https://learnku.com/articles/16000

https://blog.csdn.net/weixin_42188216/article/details/100518495

https://returnc.com/detail/3706

 

Supongo que te gusta

Origin blog.csdn.net/qiuziqiqi/article/details/114985149
Recomendado
Clasificación