簡體   English   中英

yii如何更改上傳的文件名

[英]yii how to change uploaded file name

我想上傳圖像並更改原始名稱,然后保存。

模型:

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

控制器:

$model->image = CUploadedFile::getInstanceByName('image');

如果我保存它而沒有任何其他操作,它將起作用。 但是我該如何更改圖像名稱? 我嘗試如下所示:

$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->file = CUploadedFile::getInstanceByName('image');
$model->file->saveAs(Yii::app()->basePath.'/../public/images/user/' . $model->image);
$model->image = $model->file->name;

效果很好。(不是真正的代碼) 請參閱此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM