Загрузка массива в файл CSV в Laravel 5.1

У меня есть массив, и я пытаюсь загрузить его как CSV-файл
мой массив выглядит так

Array(
[0] => Array
(
[Date] => 2017-01-02
[Name] => Asia consumer MC Alpha bmk - risk
[Level] => .333000
)

[1] => Array
(
[Date] => 2017-01-03
[Name] => Asia consumer MC Alpha bmk - risk
[Level] => .333000
))

мой код для преобразования массива в файл

public function DownloadFile($filetype,$Array_data,$content){

$LevelArray = array('Date','Name','Level');

$selected_array =  $LevelArray;
if($filetype =='csv'){

$Filename ='Level.csv';
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment;
filename='.$Filename.'');
// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
fputcsv($output, $selected_array);
foreach ($Array_data as $row){
fputcsv($output, $row);
}
fclose($output);
}}

в ответ я получаю вывод по ответу, но этот ответ не преобразуется в тип файла, хотя заголовки указывают на получение файла CSV из него.

 Date,Name,Level
2017-01-02,"Asia consumer MC Alpha bmk - risk",.333000
2017-01-03,"Asia consumer MC Alpha bmk - risk",.333000
2017-01-04,"Asia consumer MC Alpha bmk - risk",.333000

Я пытался использовать метод ответа Laravel и многие другие тоже ничего не работает, его заголовки не в состоянии заставить браузер загрузить файл

Заголовки RESPONSE выглядят так

Connection:close
Content-Disposition:attachment; filename=Benchmark-Level.csv
Content-type:text/csv;charset=UTF-8
Host:localhost:8000
X-Powered-By:PHP/5.6.25

1

Решение

Ваш второй заголовок разделен на 2 строки? Это должна быть одна строка без разрывов строк.

header('Content-Disposition: attachment; filename='.$Filename.'');

редактировать

Этот код работает для меня. Я добавил еще один заголовок для принудительной загрузки, но он работает в Chrome с этим дополнительным заголовком или без него. Не могли бы вы попробовать запустить его в разных браузерах? Я думаю, что есть настройки браузера
предотвращение загрузки.

<?php

$selected_array = array('header:col1','header:col2', 'header:col3');

$Array_data = array(
array('row1:col1','row1:col2', 'row1:col3'),
array('row2:col1','row2:col2', 'row2:col3'),
array('row3:col1','row3:col2', 'row3:col3'),
);

$Filename ='Level.csv';
header('Content-Type: text/csv; charset=utf-8');
Header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename='.$Filename.'');
// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
fputcsv($output, $selected_array);
foreach ($Array_data as $row){
fputcsv($output, $row);
}
fclose($output);
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector