1

私は次の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()) {
4

1 に答える 1

0

モデル全体を保存する前に実行したと思います$user->image->saveAs($path)。そのため、ファイルが既に $path に移動されているときに、一時フォルダー内のファイルを検証しようとしています。そのため、モデルを保存してから使用$user->validate()または実行してください。saveAs($path)

于 2013-12-28T16:04:04.727 に答える