• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Problem beim Download eines PHP-erzuegten gz-Archivs

jminy

New member
Hallo Leute,

seit meiner letzten Frage hier im Forum, habe ich, dank Eurer Hilfe, wieder einige Lernfortschritte gemacht und vieles von dem was ich vor hatte erfolgreich umsetzen können.
So langsam beginnt es Spaß zu machen...

Jetzt habe ich wieder eine Frage, die eigentlich nicht wirklich in dieses Forum gehört. Allerdings weiß ich nicht so recht, wo ich die Frage sonst stellen könnte und hoffe auf einen entsprechenden Hinweis von Euch.

Jetzt meine Problemstellung:

Ich habe ein kleines Script, mit dem ich ein gz-Archiv erstelle und zum Download anbiete (in einem mittels .htaccess geschützten Verzeichnis).

Code:
function compress($srcName, $dstName)
{
$fp = fopen($srcName, "r");
$data = fread ($fp, filesize($srcName));
fclose($fp);

$zp = gzopen($dstName, "w9");
gzwrite($zp, $data);
gzclose($zp);
}

// Compress a file
compress("daten.txt", "ZIP/daten.gz"); 
echo '<a href="ZIP/daten.gz">Download</a>';

Das klappt auch prima.

Wenn das Archiv nun über den Browser heruntergeladen wird, lässt es sich nicht entpacken. Lade ich das gleiche Archiv aber per FTP vom Server herunter, egal ob in ASCII oder binär, funktioniert das Entpackenn ohne Probleme.

Hat einer eine Idee woran das liegen könnte, oder in wlchem Forum ich diese Frage eigentlich stellen müsste?

Schon mal Danke im Voraus und liebe Grüße,
Sarah
 
Du musst den Browser vorher informieren, dass es sich um ein zip-Archiv handelt. Dies machst du in dem du den MIME-Typ der Daten mit dem Header an den Browser sendest.

PHP:
header('Content-type: application/gzip');

muss vor allen anderen Ausgaben stehen.
 
AW: Problem beim Download eines PHP-erzeugten gz-Archivs

Hallo ZeitGeist,

erst einmal vielen Dank für Deine Hilfstellung. Leider versteh ich's (noch) nicht
so wirklich.
Wenn ich also die header-info wie von Dir beschrieben einfüge
(siehe nachstehendes Code-Schnipsel), dann wird die komplette PHP-Datei nicht aber das gzip-Archiv (daten.gz) heruntergeladen.
Es soll aber so sein, dass beim Klick auf 'Download' NUR die Datei 'daten.gz' heruntergeladen wird.

Hier noch mal das Script, das das gz-Archiv erstellt und es zum Download anbietet:

Code:
<?PHP
header('Content-type: application/gzip'); 

function compress($srcName, $dstName)
{
$fp = fopen($srcName, "r");
$data = fread ($fp, filesize($srcName));
fclose($fp);

$zp = gzopen($dstName, "w9");
gzwrite($zp, $data);
gzclose($zp);
}
compress("daten.txt", "ZIP/daten.gz");
echo '<a href="ZIP/daten.gz">Download</a>';
?>

Irgend etwas mache ich also falsch...

Aber was?

Liebe Grüße, Sarah
 
Hallo jeok, du 'ForenGott',

danke für den Link. Da war ich auch schon (hab's mir ergoogelt), Nur leider ist genau mein Problem dort nicht wirklich so detailgenau beschrieben, das ich dadurch mein Problem gelöst bekomme.
Wenn ich diese detaillierte Erklärung finden möcht, muss ich dort einen PHP Online-Kurs buchen.
hmmm.....

Ich glaube 'Gott'wäre da gnädiger mit mir (lach)...

Also, bekomme ich noch eine bischen Wissenswertes was mir hilft, ohne dass ich gleich einen Online-Kurs buchen muss???

Wäre echt super nett !!!

Liebe Grüße, Sarah
 
Deine Datei hat zwar die Endung .gz, ist aber eine ordinäre Text Datei. Soll heißen, dass Dein Einpack-Skript nicht funktioniert. Manchmal haben Rückgabewerte und Fehlermeldungen durchaus eine gewisse Bedeutung.

Außerdem muss die Datei mit dem Type application/gzip ausgeliefert werden, nicht das Skript, welches diese generiert. Da Du zum Ausliefern kein Skript verwendest, sondern einfach auf die Datei verlinkst, solltest Du eigentlich gar nichts machen müssen, denn der Webserver müßte wissen, wie eine .gz Datei zu verschicken ist. Da es aber eben keine ist (siehe oben), weiß der Webserver es besser und schickt sie als Text.

Und Deine per FTP als ASCII oder Binär gleichbleibend korrekt heruntergeladene Version, hängt auch mit der Tatsache zusammen, dass es sich um eine ganz normale Textdatei handelt. Wäre es eine .gz Datei, dann würde eine ASCII-Übertragung höchstwahrscheinlich Brei runterladen.

Lösung für Deine Probleme: Die Datei tatsächlich einpacken.
 
Zurück
Oben