Yii文件上传$ _FILE为空

时间:2016-07-07 16:22:01

标签: php image yii upload

我正在尝试通过表单将图像上传到我的模型。我正在使用Yii 1.1

模型没有在数据库中包含列" image",所以我在模型中创建了这样的属性

public $image;

我在规则中添加了以下内容

array('image', 'file', 'types'=>'jpg,gif,png', 'allowEmpty'=>true),

在视图中我将htmlOption array('enctype' => 'multipart/form-data')添加到表单中,而对于文件上传:

<th><?php echo $form->labelEx($model, 'image'); ?></th>
<td><?php echo $form->fileField($model, 'image');?></td>
<th><?php echo $form->error($model, 'image');'>'?></th>

我看到上传图片的按钮,当我按下按钮时我的控制器的动作被调用但如果我做了一个日志显示$ _POST和/或$ _FILES我得到了这个:

从$ _FILES

中记录
2016/07/07 18:18:12 [info] [application] FILE : 

Array
(
)

我从$ _POST

收到的日志
[Puntointeres] => Array
    (
        [Name] => My Name
        [Description] => What ever
        ......
        [image] => 
    )

任何帮助?

3 个答案:

答案 0 :(得分:2)

可能你忘了设置enctype:

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

此外,您的字段不正确,应为:

$form->field($model, 'image')->fileInput()

还记得Yii没有在$ _POST中发送图像的值。通过$ _POST,它会在使用inputFile时发送它生成的隐藏字段。

答案 1 :(得分:1)

问题与序列化字段的SubmitButtonAjax有关,文件字段已转换为字符串。

答案 2 :(得分:0)

您好,您是否检查过开发者工具中生成的html?我有enctype或没有。 如果没有,请在表单选项中添加。

'htmlOptions' => array(
        'enctype' => 'multipart/form-data',
    ),

此外,您必须致电CUploadedFile以获取上传的文件信息

使用此链接上传yiihttp://www.yiiframework.com/wiki/2/how-to-upload-a-file-using-a-model/

中的文件

有关CUploadedFile档案http://www.yiiframework.com/doc/api/1.1/CUploadedFile

的信息