Im Speicher herunterladen und entpacken zip-Archiv
Ich würde gerne laden Sie ein zip-Archiv und entpacken Sie es in den Speicher mit PHP.
Dies ist, was ich heute habe (und es ist einfach zu viel Datei-handling für mich 🙂 ):
//download the data file from the real page
copy("http://www.curriculummagic.com/AdvancedBalloons.kmz", "./data/zip.kmz");
//unzip it
$zip = new ZipArchive;
$res = $zip->open('./data/zip.kmz');
if ($res === TRUE) {
$zip->extractTo('./data');
$zip->close();
}
//use the unzipped files...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warnung: Das kann nicht sein fertig in-memory —
ZipArchive
können mit "memory mapped files".Erhalten Sie die Daten von einer Datei in eine zip-Datei in eine variable (Speicher) mit
file_get_contents
Docs, wie es unterstützt diezip://
Stream wrapper Docs:Können Sie nur auf lokale Dateien zugreifen mit
zip://
oder über ZipArchive. Dafür können Sie zunächst kopieren Sie den Inhalt in eine temporäre Datei und die Arbeit mit ihm:$zipFile = 'http://..../bla.kmz';
?zip://
unterstützt nur lokale Dateien, die bisher (ebenso wie ZipArchive). Sie haben, um es zugänglich über Ihre standard-Datei-system. Aktualisieren Sie die Antwort, um diese sichtbar für Ihrehttp
url.php://memory
?file://
wird nicht funktionieren. Es muss der Pfad zum Dateisystem. Dasselbe für dieZipArchive
Klasse, ich nehme an, dies bezieht sich auf jedes andere. Streams sind nicht so gut unterstützt in der zip-Datei PHP-Erweiterung, das ist ein bisschen schade in meinen Augen. Gehen Sie für das tempfile zu umgehen, dass der zweite code-Beispiel. Sie können die Kapseln in einer Klasse von selbst erweitern/Dekoration ZipArchive und bieten ein file-system-wrapper, der fähig ist, haben diese mehr fließend.ZipArchive
Arbeit im Arbeitsspeicher - für was es wichtig ist 🙂Leicht:
Können Sie einen stream auf eine Datei innerhalb der zip und entpacken Sie es in einer Variablen:
$zip
?Wenn Sie können, verwenden Sie die system-Aufrufe, der einfachste Weg sollte so Aussehen (bzip2 Fall). Verwenden Sie einfach die Standardausgabe.