试图显示在base64中编码的图像

时间:2015-10-16 22:21:31

标签: php image laravel laravel-5 base64

我正在尝试在浏览器上显示我的图像(以base64编码)。

这就是我的尝试:

        {{$projects}}
        <hr>
        @foreach ($projects as $project)
            @if ($project['name'] != null)
                <p>Project {{ $project['name'] }}</p>
                <img src="data:image/{{$project['image_type']}};base64,{{$project['image']}}" alt="Project picture" >
            @endif
        @endforeach

在浏览器链接上显示如下:http://i.imgur.com/U1YUcSo.png

不幸的是,这没有成功。

显示图像之前。我使用以下代码将图像上传到我的数据库:

public function store(Request $request)
{   
    if($request['file'] != null) {
        $file = $request['file'];
        $fileName = $file->getClientOriginalName();
        $imageType = pathinfo($fileName, PATHINFO_EXTENSION);

    } else {
        $fileName = null;
        $imageType = null;
    }
    Project::create([
        'name' => $request['name'],
        'content' => $request['content'],
        'image' => base64_encode($fileName),
        'image_type' => $imageType,
    ]);

    return redirect('/projects');
}

有人可以告诉我我做错了吗?

2 个答案:

答案 0 :(得分:1)

似乎您在数据库中编码文件名而不是文件内容。

了解http://php.net/manual/pt_BR/function.file-get-contents.php

(...)
'image' => base64_encode(file_get_contents($fileName)),

答案 1 :(得分:1)

Niloct是对的。

Insted of

base64_encode($fileName);

你必须使用

base64_encode(file_get_contents($fileName));