如何在laravel 5.5中的s3桶中上传图像

时间:2018-02-28 10:38:05

标签: php laravel amazon-web-services amazon-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浏览器URL的区域:看起来像:

  https://s3.console.aws.amazon.com/s3/home?region=us-east-2

我正在提供rgion,它出现在这个url(us-east-2)的末尾,你可以在我的env文件中看到。 我在创建桶名时创建的区域是US East(N.Virginia)。请告诉我如何正确地写区域。

任何帮助都将受到高度赞赏!

2 个答案:

答案 0 :(得分:1)

AWS API来电中设置您AWS S3设置的区域(显示在S3存储桶GUI中),并且不要注意网址中显示的区域。

例如,在我的AWS S3控制台中,虽然我在region=us-east-2设置中设置了EU (Frankfurt)区域,但它也会在网址中显示AWS S3

答案 1 :(得分:0)

要查找您的S3存储区域,请从this zappysys.com article

开始执行以下步骤
  1. 访问https://console.aws.amazon.com/

  2. 打开您的AWS控制台
  3. 从信息中心点击S3选项(或访问 https://console.aws.amazon.com/s3/home

  4. 您将在左侧列表中看到所有存储桶

  5. 点击所需的S3存储桶名称

  6. 点击顶部的“属性标签”

  7. 现在,您将看到所选存储区的Region以及许多存储区 其他财产。

  8. enter image description here

    您现在可以根据您在此处看到的内容更改env文件中的区域。