如何在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中的步骤操作

  1. 访问https://console.aws.amazon.com/打开您的AWS控制台
  2. 从仪表板单击S3选项(或访问https://console.aws.amazon.com/s3/home
  3. 您将在左侧列表中看到所有存储桶
  4. 单击所需的S3存储桶名称
  5. 单击顶部的“属性”选项卡
  6. 现在,您将看到所选存储区的Region以及许多其他属性。

enter image description here

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

以上是关于如何在laravel 5.5中的s3桶中上传图像的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3 文件上传但存储桶中的文件没有大小?

如何获取使用 Cloudfront 上传的 S3 存储桶中的文件?

使用用户信息从 React Native 上传 Amazon s3 存储桶中的项目

在iOS Swift中不使用AWS SDK在Amazon S3存储桶中上传的背景图像(背景模式)

使用 Node JS 从 Amazon S3 私有存储桶中检索图像

如何从 url 视频中获取图像(存储在 s3 存储桶中)