保存PHPSpreadSheet对象

保存PHPSpreadSheet对象,php,laravel,google-app-engine,google-cloud-storage,phpspreadsheet,Php,Laravel,Google App Engine,Google Cloud Storage,Phpspreadsheet,我有一个Laravel应用程序部署到谷歌应用程序引擎。根据GAE的体系结构规则,您不能将文件保存到本地路径。我使用生成Xlsx文件并下载给用户。因此,这在本地有效,但在部署的应用程序中无效 $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); $writer->save('storage/SomeExcelFile.xlsx'); 然后我就可以用..下载文件了 return Storage::disk('pu

我有一个Laravel应用程序部署到谷歌应用程序引擎。根据GAE的体系结构规则,您不能将文件保存到本地路径。我使用生成Xlsx文件并下载给用户。因此,这在本地有效,但在部署的应用程序中无效

$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('storage/SomeExcelFile.xlsx');
然后我就可以用..下载文件了

return Storage::disk('public')->download('SomeExcelFile.xlsx');
但是,如果无法在应用程序的生产版本上本地保存文件,我将如何存储我的文件? 我将我的应用程序连接到一个可以上传文件的存储桶。但我需要文件路径来实现这一点,因为这个文件是在应用程序中按脚本创建的,在部署之前从未存储过,所以我找不到存储它的方法

据我所知,您无法将xlsx文件直接写入磁盘。例如,我可以将带有文本
示例数据的文本文件写入我的谷歌云存储桶

Storage::disk('gcs')->put('String.txt', 'sample data');
但是找不到一种方法来处理我的excel文件。此外,该应用程序部署在Flex环境中,因此我无法使用文件url结构。
gs://

请尝试以下方法:


文件内容($your/project/path/public/filename.xlsx',$writer)

找到了一个解决使用


您没有保存任何文件,如会话或日志?你能在不创建新文件的情况下打开/写入文件吗?也许您可以使用现有文件作为解决方法。您的意思是
文件\u put\u内容
?“仅在本地工作”实际上无法正确写入文件,会损坏文件。
$response = new StreamedResponse(
    function () use ($writer) {
        $writer->save('php://output');
    }
);
$response->headers->set('Content-Type', 'application/vnd.ms-excel');
$response->headers->set('Content-Disposition', 'attachment;filename="Services Reformatted.xlsx"');
$response->headers->set('Cache-Control', 'max-age=0');
return $response;