2016-10-04 3 views
-1

Я пытаюсь сгенерировать, а затем по умолчанию загрузить файл csv с помощью скрипта php. У меня есть код, который отлично работает в chrome и internet explorer, но тот же скрипт не работает в firefox. В скрипте firefox не создается файл csv должным образом. Ниже приведены сценарийfirefox не может загрузить файл csv

require('core.php'); 
$master = new db(); 
$s = $master->getRecords(); 
function array2csv(array &$array) 
{ 
    if (count($array) == 0) { 
    return null; 
    } 
    ob_start(); 
    $df = fopen("php://output", 'w'); 
    fputcsv($df, array_keys(reset($array))); 
    foreach ($array as $row) { 
     fputcsv($df, $row); 
    } 
    fclose($df); 
    return ob_get_clean(); 
} 

function download_send_headers($filename) { 

    // disable caching 
    $now = gmdate("D, d M Y H:i:s"); 
    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); 
    header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); 
    header("Last-Modified: {$now} GMT"); 

    // force download 
    header("Content-Type: application/force-download"); 
    header("Content-Type: application/octet-stream"); 
    header("Content-Type: application/download"); 


    // disposition/encoding on response body 
    header("Content-Disposition: attachment;filename={$filename}"); 
    header("Content-Transfer-Encoding: binary"); 
    header("Content-Disposition: attachment;filename={$filename}"); 
    header("Content-Transfer-Encoding: binary"); 
} 
download_send_headers(site_title .' '. date("d M Y") . ".csv"); 
echo array2csv($s); 
die(); 

HTML и JS

<a class="list-group-item" href="javascript:void(0);" onclick="return exportUser();">Export to CSV</a> 

function exportUser(){ 
     $.ajax({ 
     url: 'get_csv.php', 
     type: 'POST', 
     success: function() { 
      window.location = 'get_csv.php'; 
     } 
    }); 
} 

Я также приложил скриншот для понимания. enter image description here

+0

* "В FireFox сценарии не генерируя csv файл правильно. "* ... каким образом? – CD001

+0

@ CD001 тот же код работает отлично в chrome и IE, он генерирует файл csv и загружает, но тот же скрипт не работает в firefox, и это все. –

+1

Не генерирует CSV-файл вообще (не вытягивает диалоговое окно загрузки) или генерирует его на экране, а не как загрузку или генерирует его некорректно, так что это недействительно CSV? – CD001

ответ

0

Попробуйте добавить этот заголовок:

header('Content-Type: application/csv; charset=utf-8'); 
+0

Вместо этого? –

+0

Вы можете попробовать удалить приложение/загрузить и добавить, что он работает –

+0

Я проверил его, не работает –

0

Вам нужно добавить событие в вашей функции Js

функция exportUser (событие) будет делать это

+0

Пожалуйста, объясните это, я не понял –

+0

Вы в настоящее время вызываете свою функцию как «function exportUser()», но поскольку это Mozilla Firefox, это не работает, потому что вы не отправляете никаких событий. Вам нужно вызвать вашу функцию как «function exportUser (event)» – ptk

Смежные вопросы