Привет, я пытаюсь экспортировать большую таблицу (100 000 строк в файл CSV) с использованием метода laravel StreamedResponse chunk. С кодом, вставленным ниже, он не работает нормально и показывает ошибку ниже.Файл StreamedResponse не найден
Файл не найден Firefox не может найти файл на http://laravel/allExport2. Проверьте имя файла для капитализации или другие ошибки ввода. Проверьте, был ли файл перемещен, переименован или удален .
Контроллер
use Symfony\Component\HttpFoundation\StreamedResponse;
$headers = array(
'Content-Type' => 'text/csv',
'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
'Content-Disposition' => 'attachment; filename=test.csv',
'Expires' => '0',
'Pragma' => 'public',
);
$response = new StreamedResponse(function(){
// Open output stream
$handle = fopen('php://output', 'w');
// Add CSV headers
fputcsv($handle, [
"invoice_number",
"title",
]);
Order::chunk(500, function($orders) use($handle) {
foreach ($orders as $user) {
// Add a new row with data
fputcsv($handle, [
$user->invoice_number,
$user->courtesy_title,
]);
}
});
// Close the output stream
fclose($handle);
}, 200, $headers);
return $response->send();
Попробуйте просто вернуть ответ, не используя '-> send()', '-> send()' следует использовать запрет с '-> setCallback()'. – Ohgodwhy
@Ohgodwhy показывает тот же файл ошибки не найден. – meera1002
@ meera1002, проверьте свои маршруты (возможно, вы пытаетесь открыть несуществующий маршрут), убедитесь, что ваш код вызывается. Замените его чем-то простым, например 'echo 'Hello world';' –