Yii文件字段始终为空

时间:2013-05-11 18:21:07

标签: jquery ajax file-upload yii

我将此代码添加到我的视图中:

<?php echo $form->labelEx($model,"image:"); ?>
<?php echo $form->fileField($model, 'image'); ?>

这是我的CFormModel:

public $image;

并在CFormModel规则中:

array('image', 'file', 'allowEmpty'=>true),

并通过jquery ajax发送:

...
    var dataString=$("#myform").serialize();
    $.ajax({
            dataType:'html',
            url: sendurl,
            data: dataString,
            type: 'post',
...

但是当我想通过像

这样的东西来达到图像元素的时候

$模型 - &GT;图像

它返回空!!但是我可以通过$ model-&gt;来重新设置其他元素。 !!

我看到Yii在输入文件字段上方添加隐藏字段,当我发布数据时,它假设为图像字段!!!

什么是帽子隐藏的领域?

为什么我不能像其他字段一样到达文件字段?

为什么我的代码不起作用?

2 个答案:

答案 0 :(得分:1)

我猜你应该使用htmlOptions这样的东西:

$this->beginWidget('CActiveForm', array(
  'id'=>'activity_form', 
  'enableAjaxValidation'=>true, 
  'stateful'=>true, 
  'htmlOptions'=>array('enctype' => 'multipart/form-data')
));

有关详细信息,请参阅以下链接:

  

http://www.yiiframework.com/wiki/2/how-to-upload-a-file-using-a-model/

答案 1 :(得分:0)

.serialize()不适合这样的文件输入。你必须使用像FormData

这样的东西
var data=new FormData($("#myform")[0]);
$.ajax({
        dataType:'html',
        url: sendurl,
        data: data,
        contentType:false,
        processData:false,
        type: 'post',

http://caniuse.com/xhr2