2016-10-08 3 views
2

..\frontend\web\uploadsを作成しました。 uploadsが存在しているとき、それは動作しますYii2でフォルダを作成して画像をアップロードする

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

これは私が持っているPropertiesControllers.php構成で機能Createです。しかし、私は../web/uploads/imgが存在していないので、それはエラーが表示さuploads

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

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

嬉しいことです。投稿が役立つ場合は、回答を承認済みとしてマークしてください –

関連する問題