php / php/php-src

in-memory ZipArchive

Offen
#11,594 6 Kommentare 4 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Extension: zip Feature
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

Currently ZipArchive relies on the filesystem, for both opening and extracting files.

Would it be possible to have it work with files (or data) in memory? Or is that a limitation of the underlying zip library?

Below is an example of ZipArchive not being able to open files from a virtual file system (probably because it's a stream).

$vfs = \org\bovigo\vfs\vfsStream::setup();

copy('foo.zip', $vfs->url() . '/foo.zip');

var_dump(file_get_contents($vfs->url() . '/foo.zip')); // file contents appears

$zip = new ZipArchive();
$zip->open($vfs->url() . '/foo.zip');
$zip->extractTo(__DIR__); // Uncaught ValueError: Invalid or uninitialized Zip object
$zip->close();

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit dem in vfsStream-Beispiel gezeigten Verhalten von ZipArchive open() und extractTo() und untersuche anschließend die Unterstützung der zugrunde liegenden zip library für streams oder in-memory data. Die Aufgabe ist abgeschlossen, wenn ZipArchive ein aus einem virtuellen Dateisystem oder dem Speicher bereitgestelltes Archiv öffnen und extrahieren kann, ohne auf gewöhnliche Dateisystempfade angewiesen zu sein.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, php
Bereich
backend
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.