[PHP5] Problem mit Dateidownload / header()

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

  • [PHP5] Problem mit Dateidownload / header()

    Hallo Zusammen

    habe ein Problem mit einer Dateiausgabe an den Browser.
    Dem User soll nach einem Klick auf einen Link eine Datei ausgegeben werden.
    Dies passiert dadurch, dass eine neue Seite geöffnet wird. Diese gibt zuerst die Header an den Browser aus und dann schickt er den Dateiihnalt.
    Dies klappt zwar, jedoch wird die Datei nicht korrekt im Downloadfeld vorbenannt. Statt dem durch das Script vordefinierten Namen wird der Name des PHP-Scripts ausgegeben.

    Was genau mache ich hier falsch?
    Habe die Routine von FPDF genommen und leicht abgeändert. in FPDF funktioniert alles, jedoch in meinem Script nicht.

    Grüsse und Danke für Eure Hilfe.

    sphenix

    PHP-Code:
    public function OutFile(){ // Gibt File an Browser aus
                
    $EventData $this->Prepare(); // Daten werden aus Klassenmembern aufbereitet
                
    if($this->_IsReady == true) {
                    if(isset(
    $_SERVER['HTTP_USER_AGENT']) &&
                         
    strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
                        
    header('Content-Type: application/force-download');
                    else
                        
    header('Content-Type: application/octet-stream');
                        
    header('Content-Length: '.strlen($EventData));
                        
    header('Content-disposition: attachment; filename="'.$this->_FileName.'"');
                    echo 
    $EventData;
                }else{
                    throw new 
    Exception("ciCal::OutFile(): Fehler...");        
                }

    Zuletzt geändert von sphenixfire; 26.02.2008, 10:29.

  • #2
    hab mal in meinen codeschnippseln gekramt vielleicht bringt dich das ja weiter

    PHP-Code:
    $content_disp = (USR_BROWSER_AGENT == 'IE') ? 'inline; ' 'attachment; ';
        
    header('Content-Type: application/txt');
        
    header('Content-disposition: '.$content_disp.'filename="' $FileData['Filename'] . "." $FileData['FileExtension'] . '"');
        
    header('Pragma: no-cache');
        
    header('Expires: 0');
        
    readfile($Path); 
    das FileData-Array wurde an vorheriger Stelle aus ner Datenbank ausgelesen. (Dateiname und Endung stehen in der Datenbank. Die Datei selbst wird von der festplatte gelesen (die steht nicht in binär oder ähnlich in der datenbank)

    aber vielleicht ist es ja der richtige schubs

    P.S. der Schnippsel ist schon etwas älter, von daher vielleicht gibt es ja schon aktuellere Lösungen

    P.P.S. brech bitte mal deinen Code um es ist extrem umständlich horizontal zu scrollen.
    generell gilt, je besser lesbar und nachvollziehbar desto eher bekommt man hilfe

    Kommentar


    • #3
      PHP-Code:
      if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) 
      Wenn du das Skript mit dem IE aufrufst, wird auch kein Dateiname gesetzt. Welchen Browser verwendest du?
      Ansonsten mal st@tics Schnipsel versuchen!

      Kommentar


      • #4
        verwende zum Entwicklen IE7, Opera 9.26.

        Funktioniert leider in beiden nicht.
        Werde mal den Codeschipsel testen, vielen Dank!

        Grüsse sphenix

        Kommentar


        • #5
          ... So!

          Hy, mein Name ist Depp... Voll Depp...

          Der oben gepostete Code funktioniert einwandfrei.
          Hab FireFox und FireBug installiert. Dort wurde angezeigt, dass der Dateiname leer ist (im Header) -> war er auch! Die Var _FileName würde nämlich auch leer verwendet!

          Sorry und Danke für Eure Mühe!

          Grüsse und einen schönen Tag.

          Kommentar

          Lädt...
          X