Forms 如何将二进制文件直接保存到Yii中的数据库表字段(JSON数据)?

Forms 如何将二进制文件直接保存到Yii中的数据库表字段(JSON数据)?,forms,file-upload,yii,yii-widgets,Forms,File Upload,Yii,Yii Widgets,我正在处理一个Yii项目,其中有一个数据库,包含一个表,其中几乎所有的数据都以JSON的形式保存在一个字段中(这很疯狂,但事实就是这样): 此“JSON字段”数据具有以下结构,其中包含图像: { "id":"1", "foo":"bar", ... "bat":{ "baz":"buz", "name":"Joe Doe", "my_picture":"iVBORw0KGgoAAAANSUhEUgAAAGQA...", <-- b

我正在处理一个Yii项目,其中有一个数据库,包含一个表,其中几乎所有的数据都以JSON的形式保存在一个字段中(这很疯狂,但事实就是这样):

此“JSON字段”
数据
具有以下结构,其中包含图像:

{
   "id":"1",
   "foo":"bar",
   ...
   "bat":{
      "baz":"buz",
      "name":"Joe Doe",
      "my_picture":"iVBORw0KGgoAAAANSUhEUgAAAGQA...", <-- binary
      ...
    }
}
{
“id”:“1”,
“foo”:“bar”,
...
“蝙蝠”:{
“baz”:“buz”,
“姓名”:“乔·多伊”,
“我的照片”:“Ivborw0kggoaaansuheugaagga…”,
它起作用了

我知道,对于图像上载,我需要
文件字段(…)
,但无法找到如何配置它以便将图像直接保存到数据库。如何执行他的操作?

查看

<div class="row">
    <?php echo $form->labelEx($model, 'provider_name'); ?>
    <?php
    echo $form->fileField($model, 'data[provider][name]', array());
    ?>
    <?php echo $form->error($model, 'data[provider][name]'); ?>
</div>
CActiveRecord
model

no special changes
<div class="row">
    <?php echo $form->labelEx($model, 'provider_name'); ?>
    <?php
    echo $form->fileField($model, 'data[provider][name]', array());
    ?>
    <?php echo $form->error($model, 'data[provider][name]'); ?>
</div>
public function actionUpdate($id)
{
    $model = $this->loadModel($id);

    if(isset($_POST['External'])) {
        $modelDataArray = $model->data;

        // adding the image as string to the POSted data
        if (isset($_FILES['MyModel']['name']['data']['provider']['picture'])) {
            $_POST['MyModel']['data']['provider']['picture'] = base64_encode(
                file_get_contents($_FILES['MyModel']['tmp_name']['data']['provider']['picture'])
            );
        }

        $inputFieldData = $_POST['MyModel']['data'];            
        $updatedDataArray = array_replace_recursive($modelDataArray, $inputFieldData);

        $model->attributes = $_POST['MyModel'];
        $updatedDataJson = json_encode($updatedDataArray);
        $model->setAttribute('data', $updatedDataJson);

        if($model->save()) {
            $this->redirect(array('view', 'id' => $model->id));
        }
    }

    $this->render('update', array(
        'model' => $model,
    ));
}
no special changes