Ankündigung

Einklappen
Keine Ankündigung bisher.

Download einer csv-Datei

Einklappen

Neue Werbung 2019

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

  • Download einer csv-Datei

    Hallo zusammen,

    ich habe da ein kleines Problemchen, was mir so noch nicht passiert ist und mein Latein mir da so langsam nicht mehr weiter bringt.

    Ich erstelle mit Hilfe eines Scriptes (aus db-einträgen) eine csv-Datei, die zum einen auf den Server abgelegt wird und auch direkt zum download bereitsteht.

    nun zu meinem Problem. Die Datei, die auf dem Server liegt, ist befüllt, also da stehen die korrekten daten drin. Allerdings, die Datei die ich dann im Anschluß downloade ist leer.

    nachdem ich einiges ausprobiert habe, habe ich mir mal mit fread() den Inhalt ausgeben lassen. Die Datei wir korrekt gelesen. Ich gehe also davon aus, das irgendwas am header verkehrt ist, aber ich weiss nicht was.

    Hier meine Beispiele, die ich schon getestet habe in verschiedensten varianten:

    PHP-Code:
    $application="text/csv";
    header"Content-Type: $application); 
    header"Content-Disposition: attachment; filename=$filename"); 
    header"Content-Description: csv File" ); 
    header"Pragma: no-cache" ); 
    header"Expires: 0" ); 
    PHP-Code:
    $application="application/octet-stream";
    header"Content-Type: $application);
    header"Content-Disposition: attachment; filename=$filename");
    header"Content-Description: csv File" );
    header"Pragma: public" );
    header"Expires: 0" ); 
    PHP-Code:
    $application="text/x-csv";
    header"Content-Type: $application); 
    header"Content-Disposition: attachment; filename=$filename"); 
    header"Content-Description: csv File" ); 
    header"Pragma: no-cache" ); 
    header"Expires: 0" ); 
    ich hoffe das mir jemand weiterhelfen kann.

    viele grüße,
    netty

  • #2
    Erstmal eine Rückfrage: Ist es notwendig (oder gewünscht - wenn ja, warum?), erst eine Datei auf dem Server zu erstellen und diese dann per PHP auszuliefern?

    Kommentar


    • #3
      ja, es ist notwendig, die datei auch auf den server zu legen, damit ich die möglichkeiten habe, die dateien nochmal anzuschauen, da ich nicht diejenige bin, die dann auf download klickt. Es dient halt nur zu unserer sicherheit bzw. ist für mich eine vorsichtsmaßnahme.

      kurz und bündig: eine "Sicherheitskopie"

      Kommentar


      • #4
        Die Begründung verstehe ich zwar nicht, aber gut, die Antwort lautet "ja".
        Wird die Datei nach dem Schreiben noch mal ausgelesen und an den Client geschickt?
        Wenn ja, wurde die Datei mit fopen() geöffnet?
        Wenn ja, welche Funktion wird zum Auslesen/Senden verwendet?
        Fehlt vielleicht ein fclose()?

        Kommentar


        • #5
          ja gut, ich habe mich auch nicht klar und deutlich ausgedrückt ich rede gerne um den heissen brei herum.

          hier mal ein auszug aus meinem script:

          PHP-Code:
          $filename "dateiname_".date("Y-m-d-His",time()).".csv";
          $fh fopen($path.$filename,"w");
          fwrite($fh,utf8_decode$text ) );
          fclose($fh);
          $fp fopen($path.$filename,"r");
          if(!
          $fp){                
            
          //echo "Konnte Datei nicht erstellen! <br/>";
          } else{
            
          #echo fread($fp, 250);
            
          $application="text/csv";
            
          header"Content-Type: $application); 
            
          header"Content-Disposition: attachment; filename=$filename"); 
            
          header"Content-Description: csv File" ); 
            
          header"Pragma: no-cache" ); 
            
          header"Expires: 0" ); 

          Kommentar


          • #6
            Und wo werden nun Daten an den Client geschickt?

            Kommentar


            • #7


              och nö... den hab ich total vergessen... und wegen der einen zeile hab ich jetzt den halben tag verplempert.

              manchmal sieht man echt den wald vor lauter bäumen nicht mehr.

              danke für deine mithilfe beim finden dieser zeile:

              PHP-Code:
              $check = @fpassthru($fp); 

              stand weiter unten im script und natürlich schön auskommentiert... ohje...

              Kommentar

              Lädt...
              X