№6 Dars - Faylni yuklash va namoyish qilish.

№6 Dars - Faylni yuklash va namoyish qilish.

Web texnologiyasi olamida fayllar ro`li juda keng. Shuning uchun ham web dasturlar bunga alohida etibor qaratib kelishgan. Shu jumladan Yii ning o`zining qoida va uslublariga ega. Bir kichik misol orqali bu ishlar qanday amalga oshirilishini ko`rsatishga ruxsat bergaysiz. Buning uchun biz misolimizda rasmlarni yuklashga etiborimizni qaratamiz va shu yuklangan rasmni o`qib olish masalasini ham birgalikda ko`rgan bo`lamiz.

Birinchi navbatda biz qanday qilib fayl yuklashni ko`rib chiqamiz buning uchun jadvalimiz hosil qilingan bo`lishi kerak. Chunki ma`lumotlarni qayerdadir saqlashimiz kerak. Demak jadval yaratishdan boshlaymiz.

CREATE TABLE `pictures` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`pictures` VARCHAR(100) NULL DEFAULT NULL,
`description` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB

Va shu jadvalga mos model hosil qilamiz.

Hosil bo`lgan modelimizdagi tekshiruv qoidasiga quyidagicha kod qo`shamiz.

class Pictures extends CActiveRecord {

    public function rules(){
        return array(
            //устанавливаем правила для файла, позволяющие загружать
            // только картинки!
            array('pictures', 'file', 'types'=>'jpg, gif, png'),
        );
    }
} <pre>
     Keyin controllerimizda quyidagicha kod aniqlaymiz, bu kod bizga faylni yuklab olishimiz va jadvalga ma`lumot qo`shishimiz uchun kerak bo`ladi.
</p>
<pre>class SiteController extends CController {
    public function actionCreate(){
        $model = new Pictures;
        if(isset($_POST['Pictures']))
        {
            $model->attributes = $_POST['Pictures'];
            $uploadedFile = CUploadedFile::getInstance($model,'pictures');
            $fileName = $uploadedFile;
            $model->pictures = $fileName;
       
            if($model->save())
            {
                 $model->pictures->saveAs(
                     Yii::getPathOfAlias('webroot').'/images/uploaded/'.$fileName
                 );
            }
        }
        $this->render('create', array('model'=>$model));
    }
}

Endi viewimizni hosil qilamiz.

<?php echo CHtml::form('','post',array('enctype'=>'multipart/form-data')); ?>
<?php echo CHtml::activeFileField($model, 'pictures'); ?> 
<?php echo CHtml::activeTextArea($model, 'description', array('rows'=>10,'cols'=>25)); ?>
<?php echo CHtml::submitButton('submit'); ?>
<?php echo CHtml::endForm(); ?>

Izoh: Fayl yuklayotgan vaqtda faqatgina uning tipini emas balki o`lchamini ham etiborga oladi. Bizning quyidagi misol uchun 1MB dan katta bo`lmagan faylni yuklay oladi.

public function rules(){
    return array(    
        array('image', 'file', 'types'=>'jpg, gif, png', 'maxSize' => 1048576),
    );
}

Validatorlar haqida yanada chuqurroq bilmoqchi bo`lsangiz CFileValidator gipermurojaat orqali tanishishingiz mumkin.

Endi faylni yuklab olganimizdan keyin uni ekranga chiqarish masalasini ko`rib chiqamiz. Contrllerimizga quyidagicha kod yozamiz:

public function actionView()
 {
    // Jadvaldagi barcha ma`lumotlarni olish
    $model = Pictures::model()->findAll();
    $this->render('view', array('model'=>$model));
 }

Barcha ma`lumotlarni yig`gandan keyin view pagiga jo`natmoqda. View pagimiz quyidagicha ko`rinishga ega bo`ladi:

<?php
         foreach ($model as $value) 
         {
              echo "<div><img src='/images/uploaded/".$value->pictures."' 
              width='100px' height='100px' style='margin:10px;'/>";
              echo "
".$value->description."</div>";
         }
?>

Endi siz View actioniga murojaat qilsangiz barcha yuklangan ma`lumotlariningiz ekranda namoyon bo`ladi.

Ilmga bo`lgan chanqoqligingiz sizni tark etmasin. E`tiboringiz uchun raxmat!

Manba:


JONNY - Texnoman foydalanuvchisi

Muallif haqida

JONNY Arduino, Java, C#, Android, Windows, Linux, Debian, Javascript. O'zbekistonni rivojlantiramiz! Dasturlash orqali vatanimizni yangi marralarga olib chiqamiz.


Qiziq bo‘ladi:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!