2015-10-07 5 views
0

Я пытаюсь загрузить CSV-файл с PHP, но я не могу заставить его получить диалоговое окно. я изменил заголовки и использовать функцию ReadFile(), как показано hereЗагрузка CSV-файла с PHP

Это мой код:

$nodeId = 'something'; 
$filename = "/var/www/dkar/ruralBroadband/ruralApp/rural/csvExports/$nodeId.csv"; 

header('Content-type: text/csv'); 
header('Content-disposition: attachment; filename ="report.csv"'); 
readfile($filename); 

** EDIT **

Пробовал также с этим, как предложил:

header('Content-Disposition: attachment; filename="report.csv"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize('report.csv')); 

Когда я проверяю ответ в Firebug, я могу увидеть весь CSV-файл. Также изменение заголовков в:

Content-Type text/csv 
Content-disposition attachment; filename ="report.csv" 

Так что я не могу понять, почему я не получаю диалоговое окно для сохранения файла.

ответ

0

В конце концов я не использовал вышеупомянутый метод, и я это сделал, который прекрасно работает и его более прямо вперед:

var ajaxurl = 'exportNodeData.php', // script to run 
       data = {nodeId:nodeId}; // data to pass 
       $.post(ajaxurl, data, function (response) {  
        document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip'; 

       }); 

Это Аякс запрос, который я выполняю, чтобы создать файл CSV (который также зашифрован). Затем я использую эту строку:

document.location.href = 'https://www.ruralauditor.gr/csvExports/'+nodeId+'.zip'; 

, чтобы принудительно загрузить файл.

2

Добавьте эти заголовки:

header('Content-Disposition: inline; filename="report.csv"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: ' . filesize($filename)); 
+0

inline? не приложение? – user1919

+0

Я пробовал - и не дает другого результата/ – user1919

+0

. '$ Filename' который вы хотите скачать? В этом случае длина содержимого должна быть «$ filename» не «reports.csv». Я обновил ответ. – NaijaProgrammer

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