React + Laravel скачивание файлов

141
19 декабря 2017, 19:11

Есть АПИ на Laravel, я использую библиотеку Laravel-Excel что бы сгенерировать xls файл, как его правильно отдать клиенту и как сделать на реакте скачивание файла?

На php делаю так:

  $this->makeExcel($logs, ContentLog::getActions(), 'logs.log_by_user_table', 'Logs:_' . $user->name);

Метод makeExcel:

private function makeExcel(Collection $data, array $actions, string $view, string $name)
{
    $excel = App::make('excel');
    $excel->create($name, function ($excel) use ($data, $actions, $view) {
        $excel->sheet('log', function ($sheet) use ($data, $actions, $view) {
            $sheet->loadView($view, ['log' => $data, 'actions' => $actions]);
        });
        $excel->store('xls')
            ->export('xls');
    });
}

Я использую axios для отправки запроса, например так:

static getFile(url, params) {
    return axios({
        method: 'GET',
        url: backendDomen + url,
        responseType: 'blob',
        params: params,
        headers: {
            Authorization: 'Bearer ' + localStorage.getItem('token'),
            Accept: 'application/vnd.ms-excel',
        }
    }).then(function (value) {
        console.log(value)
        FileDownload(value.data, 'report.xls')
        return value
    }).catch(function (reason) {
        console.log(reason)
        if (reason.response && reason.response.status === 401) {
            window.location.replace('/auth/login')
        } else {
            console.error(reason)
        }
    })
}

В консоль выводится ошибка

Error: Network Error at createError (createError.js:16) at XMLHttpRequest.handleError (xhr.js:87)

Хотя в браузере я вижу что приходит

Answer 1

Добавляем заголовок в конце

->export('xls', ['Access-Control-Allow-Origin' => '*']);

а на фронте меняем тип

  responseType: 'arraybuffer',
READ ALSO
Имитация нажатия кнопки PHP/JS

Имитация нажатия кнопки PHP/JS

Мне нужен скрипт на PHP или JavaScript, который будет на стороннем сайте вводить в текстовое поле текст, а потом нажимать несколько кнопокID кнопок...

138
Данные не возвращаются от сервера JSONP

Данные не возвращаются от сервера JSONP

Помогите получить ответ от сервераЕсть функция выполнения запросов в формате JSONP c помощью тега script

134
Локализация laravel 5.4

Локализация laravel 5.4

Всем доброго времени сутокПодскажите пожалуйста столкнулся с такой задачей

216