我已经创建了一个从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给出了这样的视图:
这里发生了什么?为什么Html :: image无法呈现我的图像文件? :(
答案 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)