我正在尝试导入托管在AWS Lambda中的Laravel中的excel工作表,但遇到错误
touch(): Unable to create file /var/task/storage/framework/laravel-excel/laravel-excel-ToQHNqV18ybdHCmqQFJKidLr5dSsWSUe.xlsx because Read-only file system我要导入的代码是
Excel::toArray(new ClientCompanyImport, $request->file('sales_accounts_sheet'));然后,我尝试将光盘名称作为第三个参数提及,如下所示
Excel::toArray(new ClientCompanyImport, 'mysheet.xlsx', 's3');并以'storage/frameworks/laravel-excel/mysheet.xlsx‘的身份上传了s3存储桶路径中的'mysheet.xlsx’文件
尽管如此,我还是得到了相同的错误。据我所知,在此更改后,系统将从S3位置获取文件,但仍试图将文件临时保存在默认位置,即Lambda中的readonly。
Laravel版本:8 Laravel-Excel: 3.1
发布于 2021-10-12 05:05:16
在阅读了大量的文章和论坛后,我找到了解决方案。
出现上述错误的主要原因是AWS Lambda的只读模式。默认情况下,excel尝试在根文件夹中上载,在Lambda中是只读的,但失败了。
Lambda支持的唯一可编辑路径是/tmp
解决方案是在config/excel.php中指定路径
return [
'temporary_files' => [
'local_path' => sys_get_temp_dir(),
],
.
.https://stackoverflow.com/questions/69350305
复制相似问题