не загрузили .csv в laravel (php)?

Я новичок в Laravel, когда я нажимаю на мой код, то он получает ответ в браузере, как
выход:
ID, «Имя события» 1, «тестовое событие» 3, «тестовый тест 1»

пожалуйста, посмотрите мой код ниже и направьте меня =>

$events = Events::all()->toArray();
$event_set = array();

//echo '<pre>'; print_r($events); die;
$i =0;
foreach ($events as $event)
{
$record['id'] = $event['id'];
$record['event_name'] = $event['event_name'];
$event_set[$i] = $record;
$i++;
}

//echo '<pre>'; print_r($event_set); die('test');
$filename = "events.csv";

$header = ['ID', 'Event Name'];
$export_data = $this->getDataCsv($event_set, $header);
return response($export_data)
->header('Content-Type','application/csv')
->header('Content-Disposition', 'attachment; filename="'.$filename.'"')
->header('Pragma','no-cache')
->header('Expires','0');


function getDataCsv($data, $headers, $delimiter = ',', $enclosure = '"') {


$filename = "php://temp";
$fp = fopen($filename, 'w');
fputcsv($fp, $headers, $delimiter, $enclosure);
if(count($data)>0){
foreach ($data as $key => $value) {
fputcsv($fp, $value, $delimiter, $enclosure);
}
}
rewind($fp);
$csvdata = fread($fp, 1048576);
fclose($fp);
return rtrim($csvdata, "\n");
}

подскажите пожалуйста, что я делаю не так?

0

Решение

используйте эту функцию для генерации и загрузки файла CSV

передать данные как:

$data = [
['ID', 'Event Name', 'test event'], // this is going to be header for the csv file
[1, 'xyz', 'aadfas'],
[2, 'abc', 'jljljl'],
];

и вызвать эту функцию

public function arrayToCSVDonwload($data, $fileName = null, $delimiter = ",")
{

$fileName = $fileName ? $fileName . '.csv' : microtime(true) . ".csv";

header("Content-Type: application/csv");
header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename=$fileName");
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");

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

foreach ($data as $row) {
fputcsv($output, $row, $delimiter);
}
fclose($output);
exit;
}
1

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

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

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