如何在laravel 5.5中的s3桶中上传图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在laravel 5.5中的s3桶中上传图像相关的知识,希望对你有一定的参考价值。
我试图将图像存储在S3桶中,我正在使用laravel 5.5我是新的,我被困在这里:我正在尝试的是:
我的控制器:
public function imageUploadPost(Request $request)
{
$this->validate($request, [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$imageName = time().'.'.$request->image->getClientOriginalExtension();
$image = $request->file('image');
$t = Storage::disk('s3')->put($imageName, file_get_contents($image), 'public');
$imageName = Storage::disk('s3')->url($imageName);
return back()
->with('success','Image Uploaded successfully.')
->with('path',$imageName);
}
我的路线:
Route::post('s3-image-upload','S3ImageController@imageUploadPost');
我的config / filesystems.php
's3' => [
'driver' => 's3',
'key' => env('AccessKeyID'),
'secret' => env('SecretAccessKey'),
'region' => env('region'),
'bucket' => env('mybucket'),
],
我从我的env文件中获取这些值,我的.env文件如下所示:
AccessKeyID=xyz
SecretAccessKey=xyz
region=us-east-2
mybucket=spikessales
现在当我上传文件并点击上传按钮时,它说:
Encountered a permanent redirect while requesting https://spikessales.s3.us-east-2.amazonaws.com/1519812331.jpg. Are you sure you are using the correct region for this bucket?
在这里我很困惑如何把我的区域也创建了桶名称(spikessales),我不知道如何给区域,因为我给出的区域,作为aws浏览器网址:看起来像:
https://s3.console.aws.amazon.com/s3/home?region=us-east-2
我正在提供rgion,它出现在这个url(us-east-2)的末尾,正如你在我的env文件中看到的那样。我在创建桶名时创建的区域是US East(N.Virginia)。请告诉我如何正确地写区域。
任何帮助将非常感谢!
在你的AWS API
调用中,从你的AWS S3
设置设置区域(它显示在S3
存储桶GUI中),并且不要注意URL中显示的区域。
例如,在我的AWS S3
控制台中,它也显示了URL中的region=us-east-2
,尽管我在EU (Frankfurt)
设置中设置了AWS S3
区域。
要查找S3存储区域,请按照this zappysys.com article中的步骤操作
- 访问https://console.aws.amazon.com/打开您的AWS控制台
- 从仪表板单击S3选项(或访问https://console.aws.amazon.com/s3/home)
- 您将在左侧列表中看到所有存储桶
- 单击所需的S3存储桶名称
- 单击顶部的“属性”选项卡
- 现在,您将看到所选存储区的Region以及许多其他属性。
您现在可以根据您在此处看到的内容更改env文件中的区域。
以上是关于如何在laravel 5.5中的s3桶中上传图像的主要内容,如果未能解决你的问题,请参考以下文章
如何获取使用 Cloudfront 上传的 S3 存储桶中的文件?
使用用户信息从 React Native 上传 Amazon s3 存储桶中的项目
在iOS Swift中不使用AWS SDK在Amazon S3存储桶中上传的背景图像(背景模式)