如何在叶片laravel 5.2中显示来自aws s3的图像

时间:2016-08-23 08:08:46

标签: php amazon-web-services amazon-s3 laravel-5

我已经创建了一个从aws S3获取数据(图像文件)的方法,如下所示:

 public static function getImage ($imagePath)
    {
        if(Storage::exists($imagePath))
        {
            return Storage::disk('s3')->get($imagePath);
        }else
        {
            return 'No Image';
        }
    }

我确定那些图像存在于aws上,所以没有问题。 然后我使用上面的方法作为我的刀片视图中的src,如下所示:

{!!Html::image(getImage($myPath),'logo',['width'=>60,'height'=>55])!!}

$ myPath这里已经指向aws上的特定文件,例如:bucket / file.jgp。但是当我运行我的网页时,这个Html :: Image给出了这样的视图: enter image description here

这里发生了什么?为什么Html :: image无法呈现我的图像文件? :(

8 个答案:

答案 0 :(得分:5)

在Laravel 6.x上工作

<img src="{{Storage::disk('s3')->url($imagePath)}}">

答案 1 :(得分:2)

您可以使用Storage::url($imagePath)。请参阅laravel docs上的Filesystem / Cloud storage

答案 2 :(得分:2)

{!!Html::image(<Your S3 bucket URL>.$myPath),'logo',['width'=>60,'height'=>55])!!}

您可以将S3 URL保存在配置文件中,并使用配置值而不是每次都写入实际值。

答案 3 :(得分:1)

我有同样的问题。这段代码解决了它

<img src="{!! url(<path to your image>) !!}" />

答案 4 :(得分:1)

我已经阅读了所有解决方案,没有人直接指出。所以我想写我的答案。对于这个问题,我只需要添加这个简单的线条和吊杆,它就开始起作用。但是我收到拒绝访问的警报,您也应该检查该问题。

<img class="img-responsive" src="{!! Storage::disk('s3')->url('thumbs/' . $business->image->path) !!}" alt="thumb">

答案 5 :(得分:0)

首先,您需要在控制器中对其进行公开促销

$path = Storage::disk('s3')->put('profileImages/', $request->file('profile_image'), 'public');

//save image name in database
$user->profile_image = basename($path);

刀片文件中

<img src="{{Storage::disk('s3')->url('profileImages/' . $user->profile_image)}}" />

答案 6 :(得分:0)

您可以添加如下访问器来获取图像URL

它返回图像的URL,您可以通过$ profile-> image

访问它
public function getImageAttribute($value)
{
    if ($value) {

        return Storage::disk('s3')->url($value);
    }

    return "https://source.unsplash.com/96x96/daily";
}

我假设您将图像保存如下

$path = $request->file('image')->store('images', 's3');
        
Storage::disk('s3')->setVisibility($path, 'public');

$profile->update([
      'image' =>  $path
      ]);

您可以检查此提交以获取更多详细信息

https://github.com/itxshakil/ediary/commit/23cb4b1cb7b8a4eac68f534e8c5b6897abc6421a

答案 7 :(得分:0)

这有效 Storage::disk('s3')->url($imagePath)

也来自您的 Minio 浏览器。

enter image description here enter image description here

您必须Add制定政策以Read and Write