私は次のMIMEタイプのファイル検証を使用します
array('image', 'file', 'allowEmpty' => true,'mimeTypes'=>'image/gif, image/jpeg, image/jpg, image/png', 'on' => 'update')
ファイルに適切な MIME タイプがない場合にうまく機能します。しかし、検証が成功した場合、ログは言う
2012/09/27 17:13:02 [warning] [application] unsafe Attribut "image" couldnt be set.
しかし、それは間違いなくsaveとして宣言されています
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()) {