2

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

<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">

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

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

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

4

1 回答 1

2

你需要类似的东西:

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

file字段名称在哪里。

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

于 2012-06-13T10:01:46.023 回答