【发布时间】:2022-06-11 19:00:33
【问题描述】:
尝试配置 Laravel 以上传到我的 aws s3 存储桶。在我将可见性更改为公开之前,它工作正常。然后它似乎可以工作,或者至少它没有显示任何错误,但没有任何内容上传到 aws。
这是我的注册控制器中我上传个人资料图片的部分
if($request->hasFile('avatar')) {
$file = $request->file('avatar');
$filename = $file->getClientOriginalName();
$file->storeAs('avatars/' . $user->id, $filename, 's3');
$user->update([
'avatar' => $filename,
]);
}
这是filesystems.php中s3的配置
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'throw' => false,
'visibility' => 'public',
],
如果没有 'visibility' => 'public',,它可以正常工作,但是一旦我添加它,就不会再上传任何东西了。
【问题讨论】:
-
您确定删除
'visibility' => 'public'有效吗?您检查了storage/logs中的日志文件是否有错误? -
在您的控制器上,您可以尝试使用
storePubliclyAs。所以尝试使用$file->storePubliclyAs('avatars/' . $user->id, $filename, 's3'); -
@aceraven777 已经尝试过 storePubliclyAs 并且这是同样的问题,在没有可见性的情况下进行了尝试,并且它确实在没有可见性的情况下保存了文件。日志文件中没有显示任何内容
-
可能是您的 s3 存储桶的设置,您是否启用了 ACL?或者您的存储桶权限可能您已阻止所有访问。
-
@aceraven777 acls 被禁用并且阻止访问被关闭
标签: laravel amazon-web-services amazon-s3 file-upload