1

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

<?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',
...

但是当我想通过一些东西来达到图像元素时

$模型->图像

它返回空!!但我可以通过 $model-> 重新定义其他元素!

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

什么是帽子隐藏场?

为什么我无法像其他字段一样访问文件字段?

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

4

2 回答 2

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/

于 2013-05-11T18:32:46.667 回答
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

于 2013-05-11T18:29:50.240 回答