繁体   English   中英

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

[英]How to upload image in s3 bucket in laravel 5.5

我正在尝试将图像存储在 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');

我的配置/文件系统.php

's3' => [
    'driver' => 's3',
    'key'       => env('AccessKeyID'),
    'secret'    => env('SecretAccessKey'),
    'region'    => env('region'),
    'bucket'    => env('mybucket'),
],

我从我的 env 文件中获取这些值 my.env 文件如下所示:

AccessKeyID=xyz
SecretAccessKey=xyz
region=us-east-2
mybucket=spikessales

现在,当我上传文件并点击上传按钮时,它说:

请求https://spikessales.s3.us-east-2.amazonaws.com/1519812331.jpg时遇到永久重定向。 您确定您为此存储桶使用了正确的区域吗?

在这里我很困惑如何放置我的区域我也创建了存储桶名称(spikessales)并且我不知道如何提供区域因为我正在提供作为 aws 浏览器 url 存在的区域:看起来像:

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

正如您在我的 env 文件中看到的那样,我给出了出现在该 url (us-east-2) 末尾的 rgion。 我在创建存储桶名称期间创建的区域是美国东部(弗吉尼亚北部)。 请告诉我如何正确地写区域。

任何帮助将不胜感激!

在您的AWS API调用中,从您的AWS S3设置中设置区域(它显示在S3存储桶 GUI 中),并且不要注意 URL 中显示的区域。

例如,在我的AWS S3控制台中,它还在 URL 中显示region=us-east-2 ,尽管我在AWS S3设置中设置了EU (Frankfurt)区域。

要查找您的 S3 存储桶区域,请按照这篇 zappysys.com 文章中的这些步骤操作

  1. 通过访问https://console.aws.amazon.com/打开您的 AWS 控制台

  2. 从仪表板单击 S3 选项(或访问https://console.aws.amazon.com/s3/home

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

  4. 单击所需的 S3 存储桶名称

  5. 单击顶部的属性选项卡

  6. 现在您将看到所选存储桶的区域以及许多其他属性。

在此处输入图像描述

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM