保存 PHPSpreadSheet 对象
Saving a PHPSpreadSheet Object
我有一个 Laravel 应用程序部署到 Google App Engine。根据 GAE 的体系结构规则,您不能将文件保存到本地路径。我正在使用 PHP Spreadsheet 生成 Xlsx 文件并为用户下载它们。所以这在本地有效,但在部署的应用程序中无效。
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('storage/SomeExcelFile.xlsx');
然后我就可以下载文件了..
return Storage::disk('public')->download('SomeExcelFile.xlsx');
但是无法在应用程序的生产版本上本地保存文件,我将如何存储我的文件?
我将我的应用程序连接到可以上传文件的存储桶。但是我需要文件路径来执行此操作,并且由于该文件是在应用程序中以脚本方式创建的,并且在部署之前从未存储过,所以我找不到存储它的方法。
据我所知,您无法将 xlsx 文件直接写入磁盘。例如,我可以将文本 sample data
的文本文件写入我的 google 云存储桶..
Storage::disk('gcs')->put('String.txt', 'sample data');
但找不到用我的 excel 文件完成此操作的方法。此外应用程序部署在 Flex 环境中,所以我不能使用文件 url 结构 gs://
试试这个方法:
file_put_contents(public_path('filename.xlsx'), $writer);
找到了使用 Symfony
流式传输文件的解决方法
$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;
我有一个 Laravel 应用程序部署到 Google App Engine。根据 GAE 的体系结构规则,您不能将文件保存到本地路径。我正在使用 PHP Spreadsheet 生成 Xlsx 文件并为用户下载它们。所以这在本地有效,但在部署的应用程序中无效。
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save('storage/SomeExcelFile.xlsx');
然后我就可以下载文件了..
return Storage::disk('public')->download('SomeExcelFile.xlsx');
但是无法在应用程序的生产版本上本地保存文件,我将如何存储我的文件? 我将我的应用程序连接到可以上传文件的存储桶。但是我需要文件路径来执行此操作,并且由于该文件是在应用程序中以脚本方式创建的,并且在部署之前从未存储过,所以我找不到存储它的方法。
据我所知,您无法将 xlsx 文件直接写入磁盘。例如,我可以将文本 sample data
的文本文件写入我的 google 云存储桶..
Storage::disk('gcs')->put('String.txt', 'sample data');
但找不到用我的 excel 文件完成此操作的方法。此外应用程序部署在 Flex 环境中,所以我不能使用文件 url 结构 gs://
试试这个方法:
file_put_contents(public_path('filename.xlsx'), $writer);
找到了使用 Symfony
流式传输文件的解决方法$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;