Есть контроллер, который на основе строк и столбцов генерирует excel-файл.
Нужно, чтобы в браузере кликали на кнопку, отправлялся ajax-запрос, на сервере формировался excel-файл, скачивался клиенту и на сервере удалялся.
Есть метод \Yii::$app->response->sendFile($filePath);
Но, если использовать его в ajax-запросе, то файл не скачивается клиенту. Как можно еще скачать файл?
Скачивание файла с сервера через ajax-запрос
-
- Сообщения: 57
- Зарегистрирован: 2016.10.16, 00:15
Re: Скачивание файла с сервера через ajax-запрос
зачем аякс тут?
-
- Сообщения: 57
- Зарегистрирован: 2016.10.16, 00:15
Re: Скачивание файла с сервера через ajax-запрос
Не нужен тут ajax, браузер не перейдет на страницу, а просто появится запрос на сохранение файла.
Если у вас блок с ссылкой обернут в pjax выставьте ссылке на загрузку data-pjax = 0
Если у вас блок с ссылкой обернут в pjax выставьте ссылке на загрузку data-pjax = 0
Последний раз редактировалось someweb 2017.08.14, 12:55, всего редактировалось 1 раз.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
- vitalik1183
- Сообщения: 1675
- Зарегистрирован: 2014.07.01, 08:42
Re: Скачивание файла с сервера через ajax-запрос
и что? а нафига здесь переход на страницу?
Сохранить файл в фс:
Выдать сразу на скачку(после генерации):
Сохранить файл в фс:
Код: Выделить всё
$phpExcelWriter = \PHPExcel_IOFactory::createWriter($phpExcel, 'Excel2007');
$phpExcelWriter->save(\Yii::getAlias('@export') . '/' . $name);
Код: Выделить всё
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="file.xls"');
$phpExcelWriter->save('php://output');
Yii2!