Yii-ファイルのアップロード

あなたは簡単にファイルアップロード機能を実装することができます yii\web\UploadedFile, models そして yii\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’ フォルダ。