Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Zip-Archiv aus Input-Stream öffnen (https://www.delphipraxis.net/142463-%5Bphp%5D-zip-archiv-aus-input-stream-oeffnen.html)

Zwoetzen 28. Okt 2009 17:02


[PHP] Zip-Archiv aus Input-Stream öffnen
 
Hi DP'ler,

ich habe nun ein Problem, was sich (für mich) als komplizierter herausstellte, als ich vermutet hatte (oder mir fehlt einfach die passende Funktion dazu ^^)


Ich möchte mittels eines Scriptes ein Zip-Archive empfangen, und dieses direkt weiterverarbeiten, dh. die darin enthaltenen Dateien einlesen und mit ein paar Umwegen speichern.
Das Problem ist nun, dass ich es nicht hinbekomme, das Zip direkt zu öffnen und auszulesen, ohne es vorher auf dem Server speichern zu müssen.

Wichtig in diesem Zusammenhang: Da der Upload im Spiel erfolgt, bekomme ich die Datei als Input-Stream, und nicht wie in HTML/PHP wohl üblicher in $_FILES.

Den Inhalt zu empfangen wäre kein Problem, mittels
Code:
$fileContent = file_get_contents('php://input');
kann ich den Inhalt der Zip-Datei als String erhalten. Doch wie kann ich diesen String direkt als Zip-File weiter verarbeiten?
(An der Art der Übertragung kann ich nix ändern, da das vom Spiel so vorgegeben wird.)


Wohl eher naive Ansätze wie
Code:
$zip = zip_open('php://input');
//oder
$zip = new ZipArchive();
$zip->open('php://input');
enden alle im Fehler 11 (ER_OPEN), dh. er kann die Datei nicht öffnen.

Lange Rede kurzer Sinn:
Wie öffne ich ein Zip-Archiv aus dem Input-Stream bzw. wie interpretiere ich einen String als Zip, ohne das Zip vorher auf dem Server speichern zu müssen?


Ich hoffe, ich habe mich klar genug ausgedrückt, und mir kann jemand weiterhelfen. In einem anderen Forum war dies (bis jetzt) nicht der Fall:
Crosspost: bplaced-Forum

MfG Zwotzen


EDIT:
Okay, das Problem hat sich wohl gerade erübrigt, Post #8 im verlinkten Thread ist wohl einer der Gründe, weshalb es direkt nicht funktioniert. Ich werde nun den Weg über das temporäre Speichern des Archivs gehen.
Trotzdem Danke, falls sich jemand mit dem Problem beschäftigt hatte ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz