Всем привет. Чет не могу понять -> делаю CSV-файл и

выдаю его на фронт для скачивания. В браузере почему-то окно скачивания не появляется, только в консоле отображается текст содержимого. Почему не происходит скачивание???
Вот код:
$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);

6 ответов

53 просмотра

Так ты не отдаешь строку с CSV или файлом на фронт, а только пишешь его. Попробуй его запихнуть в строку и сделать нечто такое: return response((string) $output)->header('Content-Type', 'text/csv; charset=UTF-8')->header('Content-Disposition', 'attachment; filename="cars.csv"');

Vitrackt- Автор вопроса
Даниил Вершинин
Так ты не отдаешь строку с CSV или файлом на фронт...

попрбывал. в $output запихиваю содержимое. все равно выдает как текст в консоль. при этом в response в хэдерах указан правильный Content-type = text/csv что же еще не хватает?

Vitrackt- Автор вопроса
Даниил Вершинин
Content-Disposition стоит аттач?

да 'Content-Disposition', 'attachment; filename="cars.csv"'

Vitrackt- Автор вопроса
Даниил Вершинин
Content-Disposition стоит аттач?

может у тебя есть целый рабочий пример?

Vitrackt
может у тебя есть целый рабочий пример?

https://docs.octobercms.com/3.x/cms/features/downloads.html#download-responses

Похожие вопросы

Обсуждают сегодня

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
8
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
Добрый день. Мне посоветовали обратиться к вам в чат за помощью. Ситуация описана на скрине. Как мне сказали, мне на бота навесили флудвейт. Есть ли возможность снять его ра...
OVERLINK
7
всем привет помогите пожалуйста используя CDN (GCP) у игроков из вьетнама загружается конфиг (размер 999 bytes) загружается 5 и более минут н а других CDN сервисах такой пробл...
Andrew Krw.
1
Просто по очереди выпиливаешь на ручной маппинг? По методу за раз
Andrii Kurdiumov
7
Приветствую. А не подскажете какие ограничения есть на использования api метода setMyName ? Несколько раз сменил имя бота и получил бан на 2 месяца на смену имени.
Slick Slack
8
Привет, коллеги! Возникла задача ограничить максимальный размер вложений для определённых расширений, например, чтобы для изображений лимит был 10 МБ, а для видео — 100 МБ. Ог...
Andro
1
Всем привет! Взялся портировать модули на 18 версию, лезет _logger.log(log_level, 'no translation language detected, skipping translation %s', frame, stack_info=True) А чт...
Max Lit
3
Доброе утро, а кто то делал Google аналитику через php ? curl_setopt($ch, CURLOPT_NOSIGNAL, true); Это должно быть async без ожидания ответа. Вообще php нормально с таким с...
Max Dubovsky
9
Карта сайта