0

我正在开发一个 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))
    ]);
}

这会完美地返回数据,但图像会以不可读的文本形式返回。有什么建议么?

4

2 回答 2

0

我假设您尚未在视图中执行此操作,这就是我所说的“处理图像显示的代码”的意思

在将其插入src属性之前,您应该正确格式化图像有效负载。
像这样更改这段代码:

return Response::json([
    "data" => $onlineAd,

    "Image"=> 'data:image/png;base64,' . base64_encode(File::get($path))
]);

在逗号后面包括 thedata和 themime type和 the 。base64

相应地修改mime type, image/png,image/jpg等。

另外,请参阅如何在 HTML 中显示 Base64 图像?

于 2015-09-30T08:16:48.647 回答
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 语句的情况下返回它们,那么请毫不犹豫地提供它。

于 2015-09-30T09:04:54.053 回答