@ryleigh
To upload an image in yii2, you can follow these steps:
- 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;
}
}
}
|
- 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(); ?>
|
- 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]);
}
}
|
- 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.