آپلود فایل ها در فریمورک Yii
شما به راحتی می توانید یک تابع آپلود فایل را به کمک yii\web\UploadedFile, models و yii\widgets\ActiveForm پیاده سازی کنید.
یک پوشه به نام ‘uploads’ در پوشه ریشه ایجاد کنید. این پوشه تمام تصاویر آپلود شده را نگه می دارد. برای آپلود یک فایل، شما باید یک مدل و یک attribute از مدل، برای یک نمونه، فایلِ آپلودشده، ایجاد کنید. همچنین باید فایل آپلودشذه را اعتبارسنجی یا validate کنید.
مرحله 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;
}
}
}
?>
attribute با نام 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 - هنگامی که form ارسال می شود، ما تابع yii\web\UploadedFile::getInstance() را برای نمایش فایل آپلودشده به عنوان یک نمونه از UploadedFile فراخوانی می کنیم. سپس، فایل را validate می کنیم و آن را روی سرور ذخیره می کنیم.
مرحله 4 - بعد، یک فایل view به نام 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 را اضافه کنید. متد fileInput() کد HTML زیر را رندر می کند –
<input type = "file">
کد HTML بالا به کاربر اجازه می دهد تا فایل ها را انتخاب و آپلود کند.
مرحله 5 - حالا اگر شما به http://localhost:8080/index.php?r=site/upload-image بروید، آنچه که مشاهده می کنید مطابق با تصویر زیر می باشد.
مرحله 6 - یک تصویر را برای آپلود انتخاب کنید و روی دکمه “submit” کلیک کنید. فایل در سرور درون پوشه ‘uploads’ ذخیره می شود.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…