2016-03-10 2 views
0

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

//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 

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

+1

Пожалуйста, перейдите по этой ссылке, это может помочь вам [Как загрузить изображение] (http://www.yiiframework.com/wiki/349/how-to-upload-image-photo-and-path-entry-in -database-with-update-functional /) – Govind

+0

Я видел учебник. но не мог его решить. –

+0

Здесь вам не удалось добавить расширение в имя файла – Govind

ответ

0

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

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

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

+0

Спасибо. но у меня уже есть папка в каталоге. –

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

Спасибо. Но это не работает. –

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

Спасибо. Но это не работает. –