1

我使用以下 mime 类型文件验证

 array('image', 'file', 'allowEmpty' => true,'mimeTypes'=>'image/gif, image/jpeg, image/jpg, image/png', 'on' => 'update')

如果文件没有正确的 mime 类型,则效果很好。但如果验证成功,则日志 sais

2012/09/27 17:13:02 [warning] [application] unsafe Attribut "image" couldnt be set.

但它肯定被声明为保存

array('image', 'safe', 'on' => 'update')

这就是为什么我收到这样的错误

finfo_file(C:\xampp\tmp\php3729.tmp): failed to open stream: No such file or directory
$mimeType=finfo_file($info,$file->getTempName());

似乎,该文件无法保存在其不安全的属性中。奇怪的是,如果我使用 mimeTypes 检查取消注释验证规则,一切正常。

在我的控制器中,我像这样设置图像文件

   if (isset($_POST['User'])) {
            $user->attributes = $_POST['User'];
            $user->image = CUploadedFile::getInstance($user, 'image');
            if ($user->validate()) {
4

1 回答 1

0

我相信您$user->image->saveAs($path)在保存整个模型之前运行,这就是为什么当它已经移动到 $path 时它会尝试验证临时文件夹中的文件。所以,保存模型后使用$user->validate()或运行。saveAs($path)

于 2013-12-28T16:04:04.727 回答