我需要使用Yii
上传文件。在视图中我有一行:
<?php echo CHtml::activefileField($qualificationModel, 'picture'); ?>
,其中
$ qualificationModel = new SkillsMapping;
控制器的一部分:
$skillsModel = SkillsMapping::model();
$skillsModel->attributes=$_POST['SkillsMapping'];
$skillsModel->picture=CUploadedFile::getInstance($skillsModel,'picture');
echo var_dump($_FILES);
if($skillsModel->validate())
{
if($skillsModel->save())
{
$skillsModel->picture->saveAs('images/qual-pics');
$this->redirect(array('view','id'=>$model->user_id));
}
}
当我选择照片并点击按钮时出现错误Picture cannot be blank.
在检查POST请求后,我创建了一个奇怪的东西 - 请求有两个属性 - SkillsMapping[picture]=
和SkillsMapping[picture]=Lighthouse.jpg
。如果在此帖子的顶部注释了echo,则两个属性都会消失。如何删除空SkillsMapping[picture]
以及为什么会这样?感谢。
答案 0 :(得分:2)
你不需要删除空的隐藏字段,因为它可以帮助你,而不是伤害你(Yii本身会自动将它放在那里;参见relevant part of the source)。
隐藏字段存在,以便在未选择上传文件时,$_POST
将填充空值。如果选择了文件 ,则文件输入控件将提供自己的POST值,以覆盖空的“保护值”。