2016-03-10 128 views
0

我試圖從Yii框架中的註冊表單上傳圖像。圖像將被保存在「img/avatar」文件夾中,圖像的名稱應該更改爲用戶名。我使用的這段代碼如下:將圖像上傳到Yii framwork中的自定義名稱

//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-functionality /) – 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

謝謝。但它不起作用。 –