DrBonsai
Mitglied
N'Abend zusammen,
ich habe eine Zip-Datei, die ein xml-file enthält. Das würde ich gerne auf dem Server entpacken, um hinterher damit rumsoielen zu können.
Ich entpacke mit $zip->extractTo($array_files_to_download[$current_array_pointer].'/'); Alles kein Problem, solange, bis die zip-Datei kleiner als 3MB ist. Wenn sie größer wird, werden mir nur 31457280 bytes entpackt. Der Rest steht nicht in meiner entpackten Datei drin.
Ich habe mir also überlegt, die Zip-Datei zu splitten und sie dann scheibchenweise zu entpacken.
Geht sowas?
Mein Ansatz war der Folgende:
Ich hole ir also die Größe meiner Datei, gucke in wieviele Teile ich sie zerschneiden muss, die alle nicht Größer als 500kB sind.
Dann lese ich den Inhalt der Datei bis zur definierten Länge in einen string, erstelle eine neue Datei, mit Endung .zip und speichere sie ab. Diesen SChritt wiederhole ich, bis zum Ende meiner ursprünglichen Datei.
Problem:
Wenn ich versuche meine Scheibchen zu entpacken, bekomme ich die Fehlermeldung, dass die zip Dateien nicht gültig seien.
Ist meine Idee grundsätzlich durchführbar, oder kann man sowas mit zip-Dateien einfach nicht machen?
mfg,
David
ich habe eine Zip-Datei, die ein xml-file enthält. Das würde ich gerne auf dem Server entpacken, um hinterher damit rumsoielen zu können.
Ich entpacke mit $zip->extractTo($array_files_to_download[$current_array_pointer].'/'); Alles kein Problem, solange, bis die zip-Datei kleiner als 3MB ist. Wenn sie größer wird, werden mir nur 31457280 bytes entpackt. Der Rest steht nicht in meiner entpackten Datei drin.
Ich habe mir also überlegt, die Zip-Datei zu splitten und sie dann scheibchenweise zu entpacken.
Geht sowas?
Mein Ansatz war der Folgende:
PHP:
$datei = "insidedescription_cs.zip";
$size = filesize($datei);
$parts = ceil($size/(500*1024));
$length_of_sub_document = ceil($size / $parts);
for($i = 0; $i<$parts; $i++)
{
$start_position = $i * $length_of_sub_document;
$sub_zip = file_get_contents($datei, NULL, NULL, $start_position, $length_of_sub_document);
unlink("test/".$i.$datei);
$sub_document = fopen("test/".$i.$datei, 'w');
fwrite($sub_document, $sub_zip);
}
Dann lese ich den Inhalt der Datei bis zur definierten Länge in einen string, erstelle eine neue Datei, mit Endung .zip und speichere sie ab. Diesen SChritt wiederhole ich, bis zum Ende meiner ursprünglichen Datei.
Problem:
Wenn ich versuche meine Scheibchen zu entpacken, bekomme ich die Fehlermeldung, dass die zip Dateien nicht gültig seien.
Ist meine Idee grundsätzlich durchführbar, oder kann man sowas mit zip-Dateien einfach nicht machen?
mfg,
David