Ruless
@Ruless
Frontend development

Как скачать файл на vuejs?

Здравствуйте. Интересует такой вопрос, как я могу скачать файл который сгенерировал мне это пакет для laravel maatwebsite/excel.

Я с vue отправляю запрос к контролеру laravel который генерирует мне эксель файл. Вопрос с том что я не могу что должен возвращать метод чтобы я потом мог этот файл скачать?
Бек и фронт проекта лежат на разных доменах
  • Вопрос задан
  • 4437 просмотров
Решения вопроса 2
C пакетом maatwebsite/excel не работал, но есть пример с phpexcel

let requestParams = {
    method: 'get',
    url: 'some-url',
    responseType: 'blob',
};

axios.request(requestParams)
    .then({data} => {
        let filename = '123' + (Math.floor(Date.now() / 1000)) + '.xlsx';
        let url = window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }));
        let link = document.createElement('a');
        link.href = url;
        link.setAttribute('download', filename);
        document.body.appendChild(link);
        link.click();
        link.remove();
    });


На backend
$oSpreadsheet = new Spreadsheet();

// TODO что-то делаем с $oSpreadsheet заполняем данными 

$oWriter = IOFactory::createWriter($oSpreadsheet, 'Xlsx');
$sFilename = '123.xlsx';

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $sFilename . '"');
header('Cache-Control: max-age=0');

$oWriter->save('php://output');
exit;
Ответ написан
Aetae
@Aetae Куратор тега Vue.js
Тлен
Вы должны просто получить ссылку, по которой просто перейти, а сервер по этой ссылке должен просто отдать файл. Vue тут не при чём.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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