2013-02-01 2 views
7

ich jQuery bin mit einem Klick auf eine Schaltfläche erkennen, die dann einen Aufruf einer Datei ausgelöst:CSV Chrome heruntergeladen - Fehler: MIME-Typ text/csv

window.location.href = "url"; 

Diese Datei fragt die Datenbank, liefert Ergebnisse schreibt es dann in eine CSV-Datei. Ich habe die folgenden Header gesetzt:

header('Content-Type: text/csv;'); 
header('Content-Disposition: attachment; filename=data.csv'); 

Diese auf alle Browsern außer Chrome arbeiten, die die folgenden Fehler in dem Konsolenprotokoll gibt „Ressource als Dokument interpretiert, sondern mit MIME-Typ text/csv übertragen:‚url‘“.

Das Seltsame ist, dass, wenn ich die Datei direkt aufrufen, funktioniert es in allen Browsern.

Code:

   $fp = fopen('php://output', 'w'); 

       header('Content-Type: text/csv;'); 
       header('Content-Disposition: attachment; filename=data.csv'); 
       header("Expires: 0"); 
       header("Cache-control: private"); 

       //Field Headers 
       $ncols = oci_num_fields($stid); 
       $headers_row = array(); 
       for ($i = 1; $i <= $ncols; ++$i) { 

        $headers_row[] = oci_field_name($stid, $i); 

       } 

       while ($row = oci_fetch_array($stid, OCI_NUM+OCI_RETURN_NULLS)) { 

        if(!empty($row)){ 
         if(!empty($headers_row)){ 
          fputcsv($fp, $headers_row); 
          $headers_row = ''; 
         } 

         fputcsv($fp, $row); 
        } 

       } 

       fclose($fp);      
       oci_close($conn); 

Wer irgendwelche Ideen hat?

+0

Sie verwenden eine beliebige SESSION-Variable im Abfrageteil? –

+0

@KasparMary Nein, es verwendet ein GET. – Elliot

+0

Erlaubt Chrome den Download nicht? In Chrome bekomme ich das als Warnung, kein Fehler. Ich bin mir nicht sicher, wie ich es beheben kann, aber ich kann meine Datei trotzdem herunterladen. –

Antwort

0

header ("content-type: application/force-download");

+0

Ich bekomme jetzt diesen Fehler: Ressource interpretiert als Dokument, aber mit MIME-Typ Anwendung/Force-Download übertragen: "ur" – Elliot

+0

Was machst du als nächstes, nachdem Sie Header setzen? –

+0

Abfrage der Datenbank, legte ich die Header ziemlich oben in der Datei. – Elliot

0

Header ("Läuft ab: 0");

Header ("Cache-Kontrolle: privat");

+0

Immer noch der gleiche Fehler wie im ursprünglichen Post angezeigt. – Elliot