2016-10-08 149 views
2

我創建了..\frontend\web\uploads在Yii2上自動創建文件夾並上傳圖片

這是PropertiesControllers.php配置,我有功能Create

public function actionCreate() 
    { 
     $model = new Properties(); 

     $date = date('YmdHis'); 

     if ($model->load(Yii::$app->request->post())) {    
      $file = \yii\web\UploadedFile::getInstance($model, 'url_img'); 
      if (!empty($file)) 
       $model->url_img = $date.$file; 

      if($model->save()) 
      { 
      if (!empty($file)) 
       $file->saveAs(Yii::getAlias('@frontend') .'/web/uploads/'.$date.$file); 

       return $this->redirect(['view', 'id' => $model->id]); 
      } 
      return $this->render('create', ['model' => $model]); 
     } else { 
      return $this->render('create', ['model' => $model]); 
     } 
    } 

uploads是存在它的工作原理。但我想重定向到新的文件夾中uploadsuploads\img

if (!empty($file)) 
        $file->saveAs(Yii::getAlias('@frontend') .'/web/uploads/img'.$date.$file); 

它顯示錯誤,因爲../web/uploads/img不存在。

我不知道要解決這個問題。幫我!

回答

2

我建議你在$file->saveAs(之前創建img文件夾。在Yii2中,您可以使用yii\helpers\FileHelper來創建一個目錄。如果你的問題是像IMG文件夾不裏上傳存在,那麼你可以用yii\helpers\FileHelper

$path = Yii::getAlias('@frontend')."/web/uploads/img"; 
\yii\helpers\FileHelper::createDirectory($path, $mode = 0775, $recursive = true); 

全部代碼中創建的文件夾約FileHelper

public function actionCreate() { 

     $model = new Properties(); 

     $date = date('YmdHis'); 

     if ($model->load(Yii::$app->request->post())) { 
      $file = \yii\web\UploadedFile::getInstance($model, 'url_img'); 
      if (!empty($file)) 
       $model->url_img = $date . $file; 

      if ($model->save()) { 


       if (!empty($file)) { 
        $path = Yii::getAlias('@frontend') . "/web/uploads/img"; 
        //here you create the folder 
        if (\yii\helpers\FileHelper::createDirectory($path, $mode = 0775, $recursive = true)) { 
         $file->saveAs(Yii::getAlias('@frontend') . '/web/uploads/img/' . $date . $file); 
        } 
       }  

       return $this->redirect(['view', 'id' => $model->id]); 
      } 
      return $this->render('create', ['model' => $model]); 
     } else { 
      return $this->render('create', ['model' => $model]); 
     } 
    } 

更多的信息在這裏http://www.yiiframework.com/doc-2.0/yii-helpers-filehelper.html

+0

它的工作原理,謝謝。 – user3318842

+1

很高興知道。如果這篇文章有幫助,請將答案標記爲已接受 –