Ankündigung

Einklappen
Keine Ankündigung bisher.

gedownloadete Datei ist Fehlerhaft

Einklappen

Neue Werbung 2019

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

  • gedownloadete Datei ist Fehlerhaft

    Hi,

    folgender Code:

    PHP-Code:
    $filename 'test.csv';
    $line_array = array("1""2""3");
            
    $fp fopen("/tmp/".$filename."""w");
            
    fputcsv($fp,$line_array";");
            
    fclose($fp);
            
    header("Content-Type: text/x-csv");
    header("Content-Disposition: attachment; filename=$filename");
    readfile("/tmp/$filename"); 
    Damit erstelle ich eine *.csv und schreibe dort rein den $list_array

    Dann downloade ich die *.csv.

    Folgendes Problem taucht auf. Auf dem Server liegt die *.csv korrekt vor.
    Nach dem download liegt Sie aber fehlerhaft auf dem lokalen Rechner.
    Die Zeile mit dem Array ist vorhanden aber dann werden kryptische Zeichen angezeigt.

    Jemand eine Idee woran das liegen könnte?


  • #2
    Aus welchem Grund machst du überhaupt diese Kombination, erst eine Datei erstellen, nur um diese dann gleich anschliessend mittels readfile wieder auszulesen? (Weil du keine Möglichkeit gefunden hast, CSV-Daten direkt in Stringform zu erstellen?)
    Würde mich nicht wundern, wenn genau dass das Problem darstellt, weil readfile nicht wirklich die aktuellen Daten liest.

    Ich würde auf das readfile verzichten, und stattdessen die CSV-Daten direkt auf php://stdout schreiben (das natürlich dann nach Ausgabe der entsprechenden Header).

    Kommentar


    • #3
      Zitat von Mishra Beitrag anzeigen
      Hi,

      folgender Code:

      PHP-Code:
      $filename 'test.csv';
      $line_array = array("1""2""3");
              
      $fp fopen("/tmp/".$filename."""w");
              
      fputcsv($fp,$line_array";");
              
      fclose($fp);
              
      header("Content-Type: text/x-csv");
      header("Content-Disposition: attachment;filename=$filename"); 
      Was spricht gegen "text/plain"?
      Und hast du dir mal von einem HTTP-Proxy anzeigen lassen, welche HTTP-Header tatsächlich gesendet wurden? Ein ausgegebenes Leerzeichen irgendwo vor dem ersten Aufruf von header() sorgt dafür, das PHP seine Default-Header abschickt. Bei ausgeschaltetem Error-Reporting sieht man aber die entsprechende Warnung nicht ...

      PHP-Code:
      readfile("/tmp/$filename"); 
      Damit erstelle ich eine *.csv und schreibe dort rein den $list_array

      Dann downloade ich die *.csv.

      Folgendes Problem taucht auf. Auf dem Server liegt die *.csv korrekt vor.
      Ganz sicher? Schon mal beide Dateien Byte-für-Byte verglichen?

      Nach dem download liegt Sie aber fehlerhaft auf dem lokalen Rechner.
      Die Zeile mit dem Array ist vorhanden aber dann werden kryptische Zeichen angezeigt.
      Da ich der kryptischen Zeichensprache nicht mächtig bin, versuche ich in solchen Fällen per Hex-Editor oder rawurlencode($kryptische_zeichenkette) herauszufinden, was genau schiefgelaufen ist.
      Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

      Kommentar

      Lädt...
      X