Yii-파일 업로드

다음의 도움으로 파일 업로드 기능을 쉽게 구현할 수 있습니다. yii\web\UploadedFile, modelsyii\widgets\ActiveForm.

디렉토리 생성 ‘uploads’루트 폴더에 있습니다. 이 디렉토리에는 업로드 된 모든 이미지가 보관됩니다. 단일 파일을 업로드하려면 업로드 된 파일 인스턴스에 대한 모델과 모델의 속성을 생성해야합니다. 또한 파일 업로드를 확인해야합니다.

Step 1 − 내부 models 폴더,라는 파일을 만듭니다. UploadImageForm.php 다음 내용으로.

<?php
   namespace app\models;
   use yii\base\Model;
   class UploadImageForm extends Model {
      public $image; public function rules() { return [ [['image'], 'file', 'skipOnEmpty' => false, 'extensions' => 'jpg, png'], ]; } public function upload() { if ($this->validate()) {
            $this->image->saveAs('../uploads/' . $this->image->baseName . '.' .
               $this->image->extension);
            return true;
         } else {
            return false;
         }
      }
   }
?>

그만큼 image속성은 파일 인스턴스를 유지하는 데 사용됩니다. 그만큼file 유효성 검사 규칙은 파일에 png 또는 jpg신장. 업로드 기능은 파일을 확인하고 서버에 저장합니다.

Step 2 − 이제 actionUploadImage 기능 SiteController.

public function actionUploadImage() {
   $model = new UploadImageForm();
   if (Yii::$app->request->isPost) { $model->image = UploadedFile::getInstance($model, 'image'); if ($model->upload()) {
         // file is uploaded successfully
         echo "File successfully uploaded";
         return;
      }
   }
   return $this->render('upload', ['model' => $model]);
}

Step 3 − 양식이 제출되면 yii\web\UploadedFile::getInstance() 업로드 된 파일을 UploadedFile예. 그런 다음 파일의 유효성을 검사하고 서버에 저장합니다.

Step 4 − 다음으로 upload.php 내부 파일보기 views/site 예배 규칙서.

<?php
   use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']])?> <?= $form->field($model, 'image')->fileInput() ?>
   <button>Submit</button>
<?php ActiveForm::end() ?>

추가하는 것을 잊지 마십시오 enctype 옵션을 선택합니다. The fileInput() 메소드는 다음 HTML 코드를 렌더링합니다-

<input type = "file">

위의 HTML 코드를 사용하면 사용자가 파일을 선택하고 업로드 할 수 있습니다.

Step 5 − 이제 다음으로 이동하면 http://localhost:8080/index.php?r=site/upload-image, 다음이 표시됩니다.

Step 6− 업로드 할 이미지를 선택하고“제출”버튼을 클릭합니다. 파일은 내부의 서버에 저장됩니다.‘uploads’ 폴더.