【发布时间】:2022-06-30 19:16:50
【问题描述】:
在我们的后端项目中,我们有一些允许将文件导出到 xlsx 的功能。 我们在本地进行了一些测试,一切正常。 但是,我在 Azure 应用服务中部署了该应用,但某些导出(不是全部)无法正常工作。
我在 Azure 中部署了后端 (PHP)、前端 (React) 和数据库 (MySQL)。我将本地 DB 的信息复制到部署在 azure 中的 DB(只是因为我们不想在数据上浪费时间)。
在后端项目中,我们使用 Laravel 和 Maatwebsite 来实现与导出相关的功能。我创建了一个实现 FromQuery、WithHeading 和 ShouldAutoSize 并具有构造、查询和标题功能的类。接下来,在一个Controller中,我使用这个结构来获取文件:
公共函数functionName(请求$request){ $fileName='name'.time().'.xlsx'; return (new ClassThatHasTheLogicOfExporting($request->all()))->download($fileName); }
我所有的导出都是这样工作的,但其中一些出现以下错误: “Excel 无法打开文件,因为文件格式或文件扩展名无效” 当我尝试打开文件时。
我一直在阅读有关此问题的信息,有人说我应该使用 ob_start()(在课程开始时)和 ob_end_clean()(就在导出文件之前)但是当我这样做时,我得到了网络应用中出现 404 错误。
奇怪的是,当我为要导出的数据添加过滤器时(例如,仅下载特定城市的人的数据)(我可以在前端应用程序中完成),文件打开时不会出错。 通过这个策略,我已经实现了将所有数据分成不同的组下载,所以我认为问题与数据中的特殊字符无关。
有人有什么建议吗?
我在 Laravel 8 中使用 maatwebsite/excel 3.1 和 PHP 8
【问题讨论】:
标签: laravel azure export maatwebsite-excel