laravel在控制器中捕获图像

时间:2014-06-26 11:26:50

标签: php laravel laravel-4 blade

这是我的HTML代码

{{Form::open(array('route'=>'admins.changePicture', 'class' => 'mainInformationContrainer', 'method'=> 'POST', 'file' => true)) }}
<ul>
    <li>
        <label>Picture</label>
        <div class="oneInfo thumbnail">
            <img src="#" id="imageID">
        </div>
    </li>
    <li>
        <label>.</label>
        <div class="oneInfo" style="width: 200px; overflow: hidden">
            <span class="spanForFileInput">

                <input type="button" class="selectImage" value="Select Image" />
                <input type="file" value="Select Image" id="imgInp"/>
            </span>
            <input type="submit"  />
        </div>
    </li>
    <li>
        <label></label>
        <div class="oneInfo">

        </div>
    </li>
</ul>
{{ Form::close() }}

在我的控制器中我这样做

public function changePicture(){
    $image = Input::file('imageID');echo $image; exit;
}

我得到一个空结果

我的问题是如何捕获控制器中的图像以及如何将其保存到我的sql数据库中?我的专栏来自longblob

类型

1 个答案:

答案 0 :(得分:1)

你得到一个空的结果,因为你有这个:

<input type="file" value="Select Image" id="imgInp"/>

没有名称,只有id,因此您需要在输入中添加name,如下所示:

<input type="file" value="Select Image" id="imgInp" name="imgInp" />

现在你可以使用它:

$image = Input::file('imgInp');

将数据保存在数据库中:

$image = base64_encode(file_get_contents(Input::file('imgInp')->getRealPath()));

现在在数据库字段中插入$image并在视图中显示它,只需使用:

// Assumed the field in the database is imageField
$imgdata = base64_decode($model->imageField);
$f = finfo_open();
$ext = finfo_buffer($f, $model->imageField, FILEINFO_MIME_TYPE);
echo '<img src="data:image/' . $ext . ';base64,' . $model->imageField . '" />';