Сохранение PhpSpreadSheet с помощью кнопки нажмите
Я пытаюсь получить мое приложение Laravel для загрузки файла excel с phpSpreadSheet продолжение PhpExcel. Но пока мне не везет. Сначала я попытался сделать вызов Axios через onClick, но это не сработало, так как JS не разрешено сохранять вещи. После этого я попытался прикрепить кнопку к действию Laravel, это просто открыло пустую страницу.
Я не знаю, сможет ли кто-нибудь здесь помочь мне, но я буду надеяться
1 ответов
сначала вам нужно установить конечную точку в ваших маршрутах, чтобы вызвать ее с помощью ajax (axios в вашем случае):
Route::get('spreadsheet/download',[
'as' => 'spreadsheet.download',
'uses' => 'SpreadsheetController@download'
]);
в вашем контроллере:
public function download ()
{
$fileContents = Storage::disk('local')->get($pathToTheFile);
$response = Response::make($fileContents, 200);
$response->header('Content-Type', Storage::disk('local')->mimeType($pathToTheFile));
return $response;
}
если у вас нет файла, вы можете сохранить его в php: / / output:
public function download ()
{
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, "Xlsx");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename="file.xlsx"');
$writer->save("php://output");
}
теперь вам просто нужно вызвать конечную точку /spreadsheet/download
чтобы начать загрузку, но нормальный <a href="/spreadsheet/download">Download</a>
будет работать.
надеюсь, это поможет вам.