Webdoktor: PHP Download-Script einer Datei

Hallo zusammen

Ich habe eine kleine Frage und zwar habe ich ein Download Script welches mir eine JPEG Datei herunterlädt. Das geht auch alles schön und gut d.h. wenn ich das Script starte kommt der Speichern Dialog wo ich die Datei dann auf meinen PC speichern kann. Wenn ich die Datei aber anschauen will z.B. im Programm von Window "Windows Bild und Faxanzeige" oder aber auch in Photoshop kommt die Fehlermeldung dass das Bild ungültig ist.

An was liegt das? Stimmt was mit den Headers nicht in meinem Script?

Wenn ich die Datei vom Server mit FTP herunterlade kann ich sie ganz normal anzeigen.

Freue mich riesig auf eure Antworten und danke schon im Voraus für eure Bemühungen.

Hier das Script:

//Dateidownload  
	$fileDir    = CONF_PHOTO_DIR.$photo_subdir;  
	$fileName   = $photo_filename.'-'.$row_photos->photo_id.$photo_mime_types[$row_photos->photo_mime]['ext'];  
	$fileString = $fileDir.'/'.$fileName;  
	$filesize	= filesize($fileString);  
	  
	// make sure the file exists before sending headers  
	if(!$fdl=@fopen($fileString,'r')){ die("Datei nicht gefunden!"); }  
	  
	else {  
  
	  header("Cache-Control: private");  
	  header("Content-Description: File Transfer");  
	  header("Content-Disposition: attachment; filename=". urlencode($fileName) ."");  
  
	  header("Content-Type: ".$row_photos->photo_mime."");  
  
  	  header("Content-Length: ".$filesize);  
	  header("Content-Transfer-Encoding: binary");  
	  header("Pragma: no-cache");  
	  header("Expires: 0");  
	  	  
	  sleep(1);  
	  readfile($fileString); 

Grüsse Marco

  1. Moin!

    Gibt es einen Link wo man sich anschauen kann, was wirklich ankommt?

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Hallo Fastix

      Vielen Dank für Deine prompte Antwort. Ich kann Dir gerne ein Mail senden mit dem Foto was defintiv ankommt.

      Wäre das möglich?

      Liebe Grüsse
      Marco

      1. Moin!

        Wäre das möglich?

        Ja. Aber nicht sinnvoll.

        Ich will mit wget -d URL  _genau_ nachsehen, _was_ der Server _wie_ liefert.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix

  2. Moin!

    Hier ein paar Änderungen:

    //Dateidownload

    $fileDir    = CONF_PHOTO_DIR.$photo_subdir;
    $fileName   = $photo_filename.'-'.$row_photos->photo_id.$photo_mime_types[$row_photos->photo_mime]['ext'];
    $fileString = $fileDir.'/'.$fileName;
    $filesize = filesize($fileString);

    // make sure the file exists before sending headers

    if (! file_exists($fileString)) {
                die("Fatal: Die Datei $fileString ist nicht vorhanden.");
            }
            if (! is_readable($fileString)) {
                die("Fatal: Die Datei $fileString ist nicht lesbar. (Rechte?)");
            }

    header("Cache-Control: private");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=". urlencode($fileName) ."");
          header("Content-Type: ".$row_photos->photo_mime."");
       header("Content-Length: ".$filesize);
    header("Content-Transfer-Encoding: binary");
    header("Pragma: no-cache");
    header("Expires: 0");
      
    #sleep(1);
    readfile($fileString);

    file_get_contents($fileString);

    
    >   
    > Grüsse Marco  
    
    MFFG (Mit freundlich- friedfertigem Grinsen)  
      
    fastix  
    
    -- 
    [Des fastix kleines CMS](http://www.fastix.org/fastix-cms/)
    
  3. Moin!

    [x] Erledigt. Es lag an einem Leerzeichen aus einer includierten Datei.

    Tip: die zu includierenden Dateien immer in der ersten Zeile mit

    <?php

    beginnen und das schließende

    ?>

    weglassen.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix