Когда я иду /test-csv
маршрут в Safari / Firefox, я могу скачать однострочный файл CSV. Но когда я пытаюсь сделать это в Chrome, на вкладке «Сеть» консоли появляется сообщение «Не удалось загрузить данные ответа».
*edit*
ВАЖНАЯ НОВАЯ ПОДРОБНОСТЬ: он работает в Chrome на компьютере с Windows, но не на моем Macbook Pro
*edit*
Я попробовал несколько вариантов Content-Type
а также Content-Disposition
Заголовки безрезультатны.
Когда я опускаю все заголовки, я получаю в браузере только строку: "id,name,email"
(без загрузки).
Нужен ли мне какой-то специальный заголовок для Chrome, чтобы я мог принудительно загрузить эти потоковые данные?
use Symfony\Component\HttpFoundation\StreamedResponse;
Route::get('test-csv', function(){
$response = new StreamedResponse(function(){
// Open output stream
$handle = fopen('php://output', 'w');
fputcsv($handle, [
'id',
'name',
'email'
]);
fclose($handle);
}, 200, [
'Content-Type' => 'text/csv',
'Content-Disposition' => 'attachment;filename=export.csv;',
]);
return $response;
});
Комментарий @ Богдана заставил меня понять, что проблема, возможно, была в моей установке / настройках в Chrome.
Я отключил расширения и удалил и переустановил хром. Сейчас работает, как и ожидалось.
Если @bogdan хочет опубликовать свой комментарий / предложение в качестве ответа, я отмечу его как принятый ответ.
Других решений пока нет …