Problem mit Datei-Download und header()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit Datei-Download und header()

    Hallo zusammen,

    ich erstelle in einer Funktion einen String, speichere diesen in eine Datei und lasse dann per header() den Datei-Downloadialog anzeigen.

    Jetzt habe ich folgendes Problem: Wenn ich sage "Speichern unter..." wird nicht die generierte Datei vom Server runtergeladen, sondern eine andere Datei erzeugt (zwar mit dem gleichen Namen), in der der HTML-Code des Browsers angezeigt wird...

    Die Funktion wird aus meiner index.php aus aufgerufen.

    PHP-Code:
    case "EigeneBuchungenCSV":
    include_once 
    "libs/auswertungen.php";
    include_once 
    "libs/DatahandlingCSV.class.php";
    EigeneBuchungen($tpleng$db_link$_GET""'CSV');
    $OutputUnterdruecken true;
    break; 
    Weiter unten wird der Output und das Parsen durch Smarty mittels $OutputUnterdruecken verhindert.

    Die Funktion EigeneBuchungen erzeugt eine neue Instanz der Klasse "DatahandlingCSV". Durch versch. Funktionen werden hier Daten zu der CSV-Datei hinzugefügt (funktioniert auch... wenn ich die Datei auf dem Server anschaue ist alles korrekt, daher poste ich den teil nicht).

    Hier der Part mit dem header (Methode der Klasse):

    PHP-Code:
       function CSVErstellen() {
          
          
    $str_Content implode($this->str_Zeilentrenner,$this->arr_Zeilen);
       
          if(!empty(
    $this->str_Dateiname)) {
          
             
    $file fopen($this->str_Dateiname"w");
             
    fputs($file,$str_Content);
             
    fclose($file);
             
             if(
    $this->bool_HeaderSenden) {
                
    header("Content-Type: application/octet-stream");
                
    header("Content-Disposition: attachment; filename=\"$this->str_Dateiname\"");

             }
          
          } else
          
             return 
    $this->str_Content;
       
       } 
    Wo liegt der Fehler?

    VIELEN DANK!

    strauberry

  • #2
    ich vermisse da ein readfile oder ein echo...

    Du musst schon die Datei an den Browser schicken, sonst weiß er ja nicht, was er runterladen soll.

    Dein Content-Dispostion-Header sagt dem Browser nur, was er im Speichern Unter-Dialog als Dateiname vorschlagen soll.

    Wenn du da als filename Wurstpelle hinschreibst, wird sich am Verhalten des Browsers auch nichts ändern.

    PHP-Code:
    readfile($this->str_Dateiname);
    exit;

    // oder
    echo $str_Content;
    exit;

    //oder
    die($str_Content);

    //oder... 
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Achsoooooo... der Header sagt quasi nur "den Inhalt des Browserfensters als Datei mit dem Namen Wurstpelle speichern"... jetzt hats geschnaggelt

      Kommentar

      Lädt...
      X