Laravel 5.8命令行执行Excel导出后文件保存位置咨询
问题分析
在控制器中调用Excel::download()时,它基于HTTP请求上下文工作——会生成响应触发浏览器下载。但控制台命令环境没有HTTP响应机制,download()方法不会将文件保存到服务器磁盘,而是把Excel的二进制内容直接输出到控制台,这就是你找不到文件的原因。
解决方案
要在控制台命令中生成并保存Excel文件,需使用Laravel Excel的Excel::store()方法替代download()。
修改自定义命令的handle()方法:
public function handle() { // 默认存储到 storage/app 目录下 Excel::store(new TavanmandAppUserExamExport, 'userexamlist.xlsx'); // 若需存储到可web访问的public目录,指定磁盘为'public' // Excel::store(new TavanmandAppUserExamExport, 'userexamlist.xlsx', 'public'); $this->info('Excel文件已成功导出!'); }
文件存储位置说明:
- 不指定磁盘时,文件路径为
storage/app/userexamlist.xlsx - 指定
'public'磁盘时,文件路径为storage/app/public/userexamlist.xlsx,可执行php artisan storage:link创建软链接,之后通过域名/storage/userexamlist.xlsx访问该文件
内容的提问来源于stack exchange,提问作者Pouya Vaghefi
相关产品推荐
相关产品推荐

