2016-08-23 103 views
0

我创建了一个方法,从AWS获取数据(图像文件)S3这样的:如何在刀片laravel显示来自AWS的S3图像5.2

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

我敢肯定,这些图像是存在于aws,所以这没有问题。这里

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

$ mypath中已经指出的,例如AWS特定文件: 然后我用上面的方法为SRC在我的刀片鉴于这样的桶/ file.jgp。但是当我运行我的网页时,这个Html :: Image给出了这样的视图: enter image description here

这是怎么回事?为什么Html :: image无法渲染我的图像文件? :(

+0

只是'{{HTML ::图像($ mypath中)}}' – vitr

+0

http://laravel-recipes.com/recipe s/185/generated-an-html-image-element –

+0

如果我只使用HTML :: image($ myPath),它会给出一个空的图像...... :) –

回答

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

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

+0

感谢您的答案@Vikas。 ..看起来我在这里有一个桶权限问题..:v –

+0

您还应该在存储时设置可见性图像到S3'Storage :: disk('s3') - > put('file.jpg',$ contents,'public');'。 [文件可见性](https://laravel.com/docs/5.2/filesystem#file-visibility) – Vikas

+0

mmmm .....什么是$ contents @Vikas ...? :) –

0

可以使用Storage::url($imagePath)请参阅Filesystem/Cloud storage上laravel文档

+0

这是不正确的。 disk() - > get()会返回原始图像内容字符串 – scottevans93

+0

Storage :: url未定义...我不能使用它,所以我使用Storage :: disk() - > get instead。 。:) –

+0

'Storage :: disk('s3') - > url($ filePath)'应该是可用的。然后显示图像只需要设置图像的src标签到这个方法的结果 – Skysplit

0

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

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