簡體   English   中英

在Yii框架中使用自定義名稱將圖像上傳到

[英]Uploading image to with custom name in 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

問題是:用戶名的名稱已保存在數據庫的圖片行中。 但是圖像未上傳到文件夾。 我試圖找出代碼中的問題。 但無法解決。 有什么建議么?

首先,您需要做的是如果未保存圖片,則禁止輸入數據庫。

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

就代碼中的問題而言。 最常見的問題是目錄不存在,指向它們的路徑不正確。

$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();
$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();

您必須檢查您的文件夾權限。

該問題已通過以下代碼解決:

$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);
}

暫無
暫無

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

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