Php yii如何更改上传的文件名

Php yii如何更改上传的文件名,php,yii,upload,Php,Yii,Upload,我想上传一张图片,更改原始名称,然后保存 型号: public function rules() { return array( array('image', 'file', 'types'=>'jpg, gif, png'), ); } 控制器: $model->image = CUploadedFile::getInstanceByName('image'); $model->file = CUpl

我想上传一张图片,更改原始名称,然后保存

型号:

public function rules()
    {
        return array(
            array('image', 'file', 'types'=>'jpg, gif, png'),
        );
    }
控制器:

$model->image = CUploadedFile::getInstanceByName('image');
$model->file = CUploadedFile::getInstanceByName('image');
$model->file->saveAs(Yii::app()->basePath.'/../public/images/user/' . $model->image);
$model->image = $model->file->name;
如果我保存它而不执行任何其他操作,它将工作。 但是我怎样才能更改图像的名称呢?我尝试下面的方法:

$model->image->name = "xxx";  //CUploadedFile.name readonly

if($model->save())
    $model->images->saveAs(some_path_else.newname);  //the files's new name is different from database


 $model->image = "abc.jpg";  //wont save it
图像属性必须是CUploadedFile的实例吗? 有人帮忙吗请做这样的事

$uploadedFile = CUploadedFile::getInstance($model, 'image');
if (!empty($uploadedFile)) {
    //new name will go here
    $model->image = strtotime($this->getCurrentDateTime()) . '-' .$uploadedFile;
}
//this will save the image with new name
$uploadedFile->saveAs(Yii::app()->basePath.'/../public/images/user/' . $model->image);
谢谢你的回答。 我想出来了。 CUploadedFile.name是只读的,因此我无法更改它。 模型需要一个新的公共属性:

public $file;    
public function rules()
        {
            return array(
                array('file', 'file', 'types'=>'jpg, gif, png'),
                array('iamge', 'length'=>'255'),
            );
        }
然后在控制器中:

$model->image = CUploadedFile::getInstanceByName('image');
$model->file = CUploadedFile::getInstanceByName('image');
$model->file->saveAs(Yii::app()->basePath.'/../public/images/user/' . $model->image);
$model->image = $model->file->name;
它很好用。(它不是真正的代码)

如果$model->image是字符串,我将得到一个错误“image不能为空”。$model->images&$model->image是model中的两个不同属性吗?对不起,我的错误。没有$model->images,只有$model->images,您可以发布您(控制器)的完整操作代码吗