Yii2 servera dosya yüklemek

veritabanında varchar olarak alan tanımlanmış durumdayken. model dosyası içine

public $file;

şeklinde değişken tanımladık. rules fonksiyonu içine aşağıdaki şekilde tanımlamayı ekliyoruz.

[[‘file’],’file’,’skiponEmpty’=>false,’extensions’=>’pdf’],

daha sonra view kısmında

<?php $form = ActiveForm::begin([‘options’=>[‘enctype’=>’multipart/form-data’]]); ?>

şeklinde bir düzenleme yapıyoruz. ve file için alan açıyoruz.

<?= $form->field($model, ‘file’)->fileInput() ?>

şimdi controller tarafında kodlamaya geçebiliriz. create fonksiyonunu aşağıdaki şekilde güncelliyoruz.
(tabi bu sırada backend\web içerisine birimresmiyazilar adında bir klasör açıyoruz ve terminali açarak aşağıdaki komutla yeni klasöre yazma izni veriyoruz.

chmod -R 777 /var/www/html/advanced/backend/web/birimresmiyazilar/)

 

use yii\web\UploadedFile;

tanımlamasını ekliyoruz.

public function actionCreate()
{
$model = new RandevuBirimler();

if ($model->load(Yii::$app->request->post())) {

$dosyaadi=$model->birim_adi;
$model->file =UploadedFile::getInstance($model,’file’);
$model->file->saveAs(‘birimresmiyazilar/’.$dosyaadi.”.”.$model->file->extension);

$model->resmi_yazi=’birimresmiyazilar/’.$dosyaadi.”.”.$model->file->extension;

$model->save();
return $this->redirect([‘view’, ‘id’ => $model->id]);
} else {
return $this->render(‘create’, [
‘model’ => $model,
]);
}
}

view dosyasında kayıdı incelerken link vermek istersek aşağıdaki şekilde bir kullanım yapabiliriz.

<?= DetailView::widget([
‘model’ => $model,
‘attributes’ => [
// ‘id’,
‘birim_adi’,
[
‘attribute’=>’islem_zamani’,
‘format’=>’raw’,
‘value’=>yardimci::mysql_tarihini_arayüze_cevir($model->islem_zamani)
],
[
‘attribute’=>’resmi_yazi’,
‘format’=>’raw’,
‘value’=>Html::a(
‘Resmi Yazısı’,
(‘//localhost’.(Yii::$app->getUrlManager()->getBaseUrl()).”/”.$model->resmi_yazi),
[‘target’=>’_blank’]
),

],
],
]) ?>