从s3存储桶获取图像并在blade.php中显示Laravel 5.4

时间:2017-09-16 15:30:14

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

我是Laravel的新手,我正试图从我的网站上显示亚马逊s3存储桶中的图像,但是我收到了FileNotFoundException错误。任何帮助将不胜感激。

我的路线:

Route::get('s3-image-upload','S3ImageController@getImage');

控制器:

public static function getImage (Request $imagePath)
{
        return Storage::disk('s3')->get($imagePath);
} 

查看:

{!!Html::image(getImage($myPath)!!}

2 个答案:

答案 0 :(得分:0)

$imagePathRequest个实例,而不是图片网址。您需要从请求中获取URL。假设您在请求中有一个名为filename的字段:

public static function getImage (Request $request)
{
    $filename = Input::get("filename"); // OR
    $filename = $request->get("filename");
    return Storage::disk('s3')->get($filename);
}

答案 1 :(得分: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