выдаю его на фронт для скачивания. В браузере почему-то окно скачивания не появляется, только в консоле отображается текст содержимого. Почему не происходит скачивание???
Вот код:
$products = Product::all();
$csvFileName = 'products.csv';
$headers = [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment; filename="product.csv"',
];
$handle = fopen('php://output', 'w');
fputcsv($handle, ['Name', 'Price']);
foreach ($products as $product) {
fputcsv($handle, [$product->name, $product->price]);
}
fclose($handle);
return Response::make('', 200, $headers);
Так ты не отдаешь строку с CSV или файлом на фронт, а только пишешь его. Попробуй его запихнуть в строку и сделать нечто такое: return response((string) $output)->header('Content-Type', 'text/csv; charset=UTF-8')->header('Content-Disposition', 'attachment; filename="cars.csv"');
попрбывал. в $output запихиваю содержимое. все равно выдает как текст в консоль. при этом в response в хэдерах указан правильный Content-type = text/csv что же еще не хватает?
Content-Disposition стоит аттач?
да 'Content-Disposition', 'attachment; filename="cars.csv"'
может у тебя есть целый рабочий пример?
https://docs.octobercms.com/3.x/cms/features/downloads.html#download-responses
Обсуждают сегодня