yii как изменить имя загруженного файла

0

Я хочу загрузить изображение и изменить оригинальное имя, а затем сохранить его.

Модель:

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 new name is different from database


 $model->image = "abc.jpg";  //wont save it

Является ли атрибут изображения обязательным экземпляром CUploadedFile? Кто-нибудь поможет PLS

Теги:
upload
yii

2 ответа

0
Лучший ответ

Спасибо за Ваш ответ. Я понял. 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;

Он отлично работает (это не настоящий код) см. Здесь

0

сделать что-то подобное

$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);
  • 0
    если $ model-> image является строкой, я получу ошибку «Изображение не может быть пустым».
  • 0
    $ model-> images & $ model-> image это два разных свойства в Model?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню