How to upload image in the yii2?

Member

by ryleigh , in category: PHP General , 2 years ago

How to upload image in the yii2?

Facebook Twitter LinkedIn Telegram Whatsapp

1 answer

Member

by brandy , 2 years ago

@ryleigh 

To upload an image in yii2, you can follow these steps:

  1. Create a model for the image file: Create a new model by extending the yiiasemodel class. Add a new attribute to the model for the file input.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
namespace appmodels;

use yiiaseModel;
use yiiwebUploadedFile;

class ImageUploadForm extends Model
{
    public $imageFile;

    public function rules()
    {
        return [
            [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'],
        ];
    }

    public function upload()
    {
        if ($this->validate()) {
            $this->imageFile->saveAs('path/to/save/image/' . $this->imageFile->baseName . '.' . $this->imageFile->extension);
            return true;
        } else {
            return false;
        }
    }
}


  1. Create a form view file: Create a view file for the form where the user can select the image file to upload.
1
2
3
4
5
6
7
8
9
use yiiwidgetsActiveForm;

$form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

    <?= $form->field($model, 'imageFile')->fileInput() ?>

    <button>Submit</button>

<?php ActiveForm::end(); ?>


  1. Create the controller action: In the corresponding controller, create an action that handles the form submission and saves the uploaded image.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace appcontrollers;

use Yii;
use yiiwebController;
use appmodelsImageUploadForm;

class ImageController extends Controller
{
    public function actionUpload()
    {
        $model = new ImageUploadForm();

        if (Yii::$app->request->isPost) {
            $model->imageFile = UploadedFile::getInstance($model, 'imageFile');
            if ($model->upload()) {
                // File uploaded successfully
                return $this->redirect(['success']);
            }
        }

        return $this->render('upload', ['model' => $model]);
    }
}


  1. Define the route in UrlManager: Finally, define a route in the urlManager configuration to access the upload action.
1
2
3
4
5
6
7
'components' => [
    'urlManager' => [
        'rules' => [
            'image/upload' => 'image/upload',
        ],
    ],
],


Now, visiting the URL image/upload will render the form where the user can select an image file to upload. After the form submission, the image file will be saved in the specified path.

Related Threads:

How to upload image in Codeigniter?
How to upload an image in laravel?
How to preview image before upload in Laravel?
How to upload an image in graphql in flask?
How to resize image before upload in PHP?
How to upload image in codeigniter?