我正在使用Laravel 4应用程序,我在我的控制器中编写了一个名为show()
的方法,它从路径中获取id
并从数据库中生成一些元素的数组,这些元素将与图像一起返回。
我可以使用Response::make()
和标题返回没有文本的图像,但如果我将其与数据绑定则无法读取图像。
我尝试过这样的事情:
public function show($id){
$onlineAd = OnlineAds::where('id', $id)->get(array('title', 'short_description', 'full_description'));
$fileName = OnlineAds::find($id)->image;
$path = 'app/storage/uploads/mobile/' . $fileName;
return Response::json([
"data" => $onlineAd,
"Image"=> base64_encode(File::get($path))
]);
}
这样可以完美地返回数据,但图像将作为不可读的文本返回。 有什么建议?
答案 0 :(得分:0)
我假设您已经不在视图中执行此操作,这就是我处理图像显示的代码的含义"
在将其插入src
属性之前,您应该正确格式化图像有效负载
像这样改变这段代码:
return Response::json([
"data" => $onlineAd,
"Image"=> 'data:image/png;base64,' . base64_encode(File::get($path))
]);
在逗号后面加data
和mime type
以及base64
。
相应地修改mime type
,image/png
,image/jpg
等
答案 1 :(得分:0)
我成功地制作了所需的输出,但仍不确定这是否是在图像旁边显示文字的最佳方式,
这是我的代码:
$fileName = OnlineAds::find($id)->image;
$path = 'app/storage/uploads/mobile/' . $fileName;
$data=base64_encode(file_get_contents($path));
$src= 'data: '.mime_content_type($path).';base64,'.$data;
echo '<img src="' . $src . '" />';
return Response::json([
"data" => $onlineAd,
]);
所以,我回应了图像并返回了文本,如果你有一个更好的解决方案,在没有echo语句的情况下返回它们,那么请不要犹豫提供它。