Yii框架,上传文件不起作用

时间:2012-06-13 09:43:33

标签: file-upload yii

我有一个表单,我想上传一个文件。这是我的代码:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
   'id'=>'show-form',
   'enableAjaxValidation'=>false,
       'htmlOptions' => array('enctype' => 'multipart/form-data'),

)); ?>

<fieldset>
    <legend>DATI TECNICI</legend>

        <div class="row">
           <?php echo $form->labelEx($model,'tec_data_file'); ?>
           <?php echo $form->fileField($model,'tec_data_file',array('size'=>45,'maxlength'=>45)); ?>
           <?php echo $form->error($model,'tec_data_file'); ?>
        </div>
</fieldset>
<?php $this->endWidget(); ?>

</div><!-- form -->

提交后没有任何内容添加到数据库中,我对firebug进行了一些调查,并发现filefield生成了这样的代码:

<input id="ytShow_tec_data_file" type="hidden" name="Show[tec_data_file]" value="">
<input id="Show_tec_data_file" type="file" name="Show[tec_data_file]" maxlength="45" size="45">

并且$_POSTtec_data_file发送了两个数据(这是我在db中的文件字段)。第一个var是空的(我认为它与第一个隐藏的输入有关)。第二个包含我的文件。当我将变量分配给我的模型进行保存时:

$modelPhoto->attributes = $_POST['Photo'];

tec_data_file获取一个空字符串!所以什么都没有上传到我的数据库。任何人都知道如何解决这个问题?如果你需要更多我

1 个答案:

答案 0 :(得分:2)

您需要以下内容:

$model = new Photo;
$model->attributes = $_POST['Photo'];
$model->image = CUploadedFile::getInstance($model,'file');

其中file是该字段的名称。

我没有测试过这个,它来自文档。