Как скачать файл Excel от Ajax в Laravel? - PullRequest
0 голосов
/ 01 апреля 2019

Я использую эту библиотеку для экспорта в Excel

Я отправляю запрос POST в конечную точку, где метод извлекает данные и создает файл:

return Excel::download(new EventsExport($request), $filename);

Проблема в том, что яполучите этот файл как бинарный в ответ, и браузер не начнет загружать его.

Как это исправить?

Ответы [ 3 ]

1 голос
/ 01 апреля 2019

Если вы делаете запрос в виде AJAX-запроса от вашего SPA, загрузка не начнется.Вам нужно либо заставить конечную точку принимать GET-запросы и связать пользователя с этим URL-адресом, либо встроить в ваше приложение SPA форму, которая будет выполнять обычный POST для конечной точки.

1 голос
/ 02 апреля 2019

Я ничего не знаю об angular, но если вы находитесь в laravel, вы можете

вызвать ajax-запрос к вашему контроллеру

, а затем создать временный файл Excel с вашими данными.

, затем просто загрузите его через этот заголовок.

header('Content-Type: text/csv'); echo file_get_contents('your_file_location_url');

, затем отсоедините временный файл, если хотите

0 голосов
/ 01 апреля 2019

Я думаю, что правильным способом будет сохранить его на вашем сервере и отправить ссылку на ваш запрос ajax:

return response()->json([
    'url' => 'url-to-stored-file'
]);

А в ответе AJAX вы можете сделать:

function(data) {
    window.location.href = data.url;
}

Я знаюэто не предпочтительный способ сделать это, но это работает

...