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