Question
J'ai un fichier téléchargé par un cron qui est au format Zip64.
Comment puis-je dézipper en utilisant php ou via un php cmd ()?
La solution
étonnamment Décompressez de unix juste travaillé!
exec(unzip -n -q zip-downloaded-by-cron.zip -d photos);
Autres conseils
A couple d'options que je connaisse.
Si votre PHP fonctionne sur Windows, vous pouvez utiliser l'interface COM DotNetZip .
$zipInput = "c:\\temp\\zip-downloaded-by-cron.zip";
$zip = new COM("Ionic.Zip.ZipFile");
$zip->Initialize($zipInput);
$dirForExtract= "c:\\temp\\extract";
# optional password
$zip->Password = "AES-Encryption-Is-Secure";
$zip->ExtractAll($dirForExtract);
$zip->Dispose();
Pour DotNetZip, ZIP64 est utilisé automatiquement si nécessaire, lors de la lecture dans un fichier zip.
Vous pouvez appeler l'outil de ligne de commande fourni avec DotNetZip.
Ceci a l'avantage de travailler sur Linux + Mono, en plus de Windows + .NET.
L'outil est unzip.exe, et vous pouvez simplement invoquer (cmd) unzip.exe downloaded-zip.zip
. Il se chargera automatiquement les choses Zip64. Il y a des options sur unzip.exe pour spécifier où extraire, les fichiers à extraire, et ainsi de suite.
Apparemment, Perl IO::Compress::Zip
module prend en charge Zip64. Si vous êtes assez confortable pour l'installer, vous pouvez appeler un petit script Perl via shell_exec()
.