Загрузка изображения с пользовательским именем в Yii Framework

Я пытаюсь загрузить изображения из регистрационной формы в рамках Yii. Изображение будет сохранено в папке «img / avatar», а имя изображения должно быть изменено на имя пользователя. Часть кода, которую я использую для этого ниже:

//uploading avatar to the img/avatar folder
$upload_file = CUploadedFile::getInstance($personModel, 'picture');
$personModel->picture = $upload_file;
$picture_name = $userModel->username;
$personModel->picture = $picture_name;
if(isset($upload_file))
{
$upload_file->saveAs(Yii::app()->basePath.'/../img/avatar'.$picture_name);
}
$personModel->save();
//end of image uploading part

Проблема в том, что имя пользователя было сохранено в графической строке базы данных. Но изображение не было загружено в папку. Я пытаюсь выяснить проблему в коде. но не могу решить это. Какие-либо предложения?

0

Решение

Ну, первое, что вам нужно сделать, это предотвратить ввод в базу данных, если изображение не сохраняется.

if(isset($uploadedfile))
{
if($upload_file->saveAs(Yii::app()->basePath.'/../img/avatar'.$picture_name)
{
$personModel->save();
}
else
{
//throw error
}
}

Что касается проблем в коде. Наиболее распространенная проблема — каталоги не существуют, путь к ним не верен.

0

Другие решения

$upload_file = CUploadedFile::getInstance($personModel, 'picture');
$ext = pathinfo($upload_file->picture, PATHINFO_EXTENSION);
$picture_name = $userModel->username . '.' . $ext;
$personModel->picture = $picture_name;
if(isset($upload_file))
{
$upload_file->saveAs('/Your_correct_path/.../etc/'.$picture_name);
}
$personModel->save();
0

$upload_file = CUploadedFile::getInstance($personModel, 'picture');
$picture_name = $userModel->username . '.' . pathinfo($upload_file, PATHINFO_EXTENSION);
$personModel->picture = $picture_name;
if (isset($upload_file)) {
$upload_file->saveAs(Yii::app()->basePath . '/../img/avatar/' . $picture_name);
}
$personModel->save();

Вы должны проверить разрешение вашей папки.

0

Проблема была решена с помощью следующего кода:

$uploadFile = CUploadedFile::getInstance($personModel, 'picture');
$extension = pathinfo($uploadFile, PATHINFO_EXTENSION);
$fileName = $userModel->username . '.' . $extension;

if (isset($uploadFile)) {
$personModel->picture = $fileName;
$uploadFile->saveAs(Yii::app()->basePath . '/../img/avatar/' . $fileName);
}
0
По вопросам рекламы [email protected]