Yii-files-upload

提供:Dev Guides
移動先:案内検索

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

*yii \ web \ UploadedFile、models* 、および *yii \ widgets \ ActiveForm* を使用して、ファイルアップロード機能を簡単に実装できます。

ルートフォルダーにディレクトリ「アップロード」を作成します。 このディレクトリには、アップロードされたすべての画像が保持されます。 単一のファイルをアップロードするには、アップロードされたファイルインスタンスのモデルとモデルの属性を作成する必要があります。 ファイルのアップロードも検証する必要があります。

ステップ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* であることを確認します。 _upload_関数はファイルを検証し、サーバーに保存します。

ステップ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]);
}
ステップ3 *-フォームが送信されると、 yii \ web \ UploadedFile
getInstance()関数を呼び出して、アップロードされたファイルを *UploadedFile インスタンスとして表します。 次に、ファイルを検証し、サーバーに保存します。

ステップ4 *-次に、 *views/site ディレクトリ内に upload.php ビューファイルを作成します。

<?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 オプションを追加してください。 * fileInput()*メソッドは、次のhtmlコードをレンダリングします−

<input type = "file">

上記のHTMLコードにより、ユーザーはファイルを選択してアップロードできます。

ステップ5 *- *http://localhost:8080/index.php?r = site/upload-image にアクセスすると、次のように表示されます。

アップロードファイルの選択

ステップ6 *-アップロードする画像を選択して、[送信]ボタンをクリックします。 ファイルは、サーバーの *'uploads' フォルダー内に保存されます。

アップロード