Datei nach Download zerstört

tombe

Erfahrenes Mitglied
Hallo Leute,

ich hab mir mit Hilfe des Forums eine Seite gebastelt auf der eine Liste von PDF-Dateien angezeigt wird. Neben jeder Datei gibt es ein Optionsfeld, mit dem eine Datei markiert werden kann. Klickt man dann auf den Speichern Button wird das "Datei speichern unter" Fenster zum Speichern angezeigt.

Mein Problem ist nun das die PDF-Datei zwar wie gewünscht auf meinem PC gespeichert wird, aber beim Öffnen im Acrobat Reader erhalte ich immer die Meldung "Beim Öffnen der Datei ist ein Fehler aufgetreten. Diese Datei ist beschädigt und kann nicht repariert werden."

Die Originaldatei (die ich eh auf meinem Rechner hab) hat 2kB, die Datei die beim Speichern erzeugt wird hat komischerweise 7 kB !!

Hier mal der Code mit dem ich das bisher versuche :

PHP:
if(isset($_POST["speichern"]) and isset($_POST["dateiname"])) {
   header('Content-type: application/pdf');
   header('Content-Disposition: attachment; filename="' .$_POST["dateiname"] .'"');
   readfile('daten/' .$_POST["dateiname"]);
}

Ich hab anstatt "Content-type: application/pdf" auch schon "Content-Type: application/octet-stream" versucht. Der Fehler tritt aber auch dann auf.

Irgendwas zerstört die Datei beim Speichern hat einer von Euch eine Ahnung was

Noch was die Dateien stehen in einem .htaccess geschützten Verzeichnis, nur falls es damit was zu tun haben könnte.

Danke schonmal

Thomas
 
Hi Gumbo,

ich danke Dir für die schnelle und was fast noch wichtiger ist erfolgreiche Antwort.

Jetzt klappt alles.

Thomas
 
Um noch eine Erklärung nachzuliefern: Wird das Skript nach der Ausgabe des Dateiinhalts nicht abgebrochen, werden auch nachfolgende Ausgaben als Dateiinhalt behandelt.
 
Habe ebenso ein Problem mit meinem Downloadscript!
Ich habe mehrere Files (*.txt, *.pdf, *zip, *.rar) nur bei rar-files ist das runtergeladene File angeblich zerstört!

Code:
!   Der Dateikopf von "?" ist zerstört.
sagt WinRAR dazu, jedoch wird das file entpackt und ist auch lesbar.

Vielleicht kann mir ja jemand weiterhelfen.

Hier mal ein Stück des Scriptes, wobei in $file der Filename steht.
PHP:
if (empty($file)) {
        echo parse_inhalt("./404.php");
    }else {
        $basedir = "/var/www/web1/files/downloads";
        $filename = sprintf("%s/%s", $basedir, $file);
        mailme("Datei wurde runtergeladen...","Datei: $file wurde runtergeladen!");
        header("Content-Type: x-type/x-subtype");
        $save_as_name = basename($file);
        header("Content-Disposition: attachment; filename=\"$save_as_name\"");
        readfile($filename);
        exit;
    }
Auch der Tipp mit dem exit hat bei mir nicht geholfen.

Gruß Atzi
 
Zurück