[Joomla 2.5]การทำ Form Upload File บน Joomla

แชร์ ความรู้ในการ พัฒนา Joomla Component Extension Module Plugin

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21993
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

[Joomla 2.5]การทำ Form Upload File บน Joomla

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

การทำ Form Upload File บน Joomla

ก่อนอื่นสร้างฐานข้อมูลสำหรับเก็บข้อมูลไฟล์

โค้ด: เลือกทั้งหมด

CREATE TABLE IF NOT EXISTS `ok467_upload_file` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `real_name` varchar(255) NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `type` varchar(10) NOT NULL,
  `create_date` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
สร้างไฟล์ controller model และ view ตามแบบ MVC ใน Joomla
สร้างโฟลเดอร์สำหรับเก็บไฟล์ Upload ไว้ใน Components

ตัวอย่างโค้ดในไฟล์ controller

โค้ด: เลือกทั้งหมด

    
    protected $url = 'index.php?option=com_test&c=upload';

    function display($cachable = false, $urlparams = false) {
        JRequest::setVar('view', 'upload');
        parent::display($cachable, $urlparams);
    }
    
    function save () {
        JRequest::checkToken() or die('Invaild Token');
        $model = $this->getModel('upload');
        $return = $model->uploadFile();
        if($return) {
            $this->setRedirect($this->url, 'Upload Successfully');
        } else {
            JError::raiseWarning('', 'Upload Failed');
        }
        $this->display();
    }
 
ตัวอย่างโค้ดในไฟล์ model

โค้ด: เลือกทั้งหมด

jimport('joomla.filesystem.file'); 

โค้ด: เลือกทั้งหมด

    function uploadFile() {
        
        $path_upload = JPATH_COMPONENT_ADMINISTRATOR.DS.'files_upload'.DS;
        $type_file = JFile::getExt($_FILES['file_upload']['name']);
        $real_name = JFile::getName($_FILES['file_upload']['name']);
        $file_name = md5($real_name.time());
        
        if(JFile::copy($_FILES['file_upload']['tmp_name'], $path_upload.$file_name.'.'.$type_file)) {
            
            $db = JFactory::getDbo();
            $query = 'INSERT INTO '.$db->nameQuote('#__upload_file').' SET '
                    .$db->nameQuote('real_name').'='.$db->quote($real_name).', '
                    .$db->nameQuote('file_name').'='.$db->quote($file_name).', '
                    .$db->nameQuote('type').'='.$db->quote($type_file).', '
                    .$db->nameQuote('create_date').'='.$db->quote(time());
            $db->setQuery($query);
            $db->query();
            
            $id = $db->insertid();
            if($id != '') {
                return true;
            }
        }
        
        return false;
        
    }
 
ตัวอย่าง form ในไฟล์ default.php

โค้ด: เลือกทั้งหมด

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');

?>
<form action="<?php echo JRoute::_('index.php');?>" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data">
    
    <label>Select File : </label>
    <input type="file" name="file_upload" >
    
    <input type="hidden" name="option" id="option" value="com_mcharts">
    <input type="hidden" name="c" id="c" value="upload">
    <input type="hidden" name="task" id="task" value="">
    <?php echo JHtml::_('form.token'); ?>
</form>
ทดสอบการทำงาน เลือกไฟล์ที่ต้องการ
เลือกไฟล์
เลือกไฟล์
upload2.JPG (15.97 KiB) Viewed 893 times
กด save ถ้าสำเร็จจะขึ้นตามภาพด้านล่าง
กด save
กด save
upload3.JPG (20.42 KiB) Viewed 893 times
แล้วมาดูในฐานข้อมูล กับ ในโฟลเดอร์ที่ใช้เก็บไฟล์
ตรวจสอบในฐานและในโฟลเดอร์
ตรวจสอบในฐานและในโฟลเดอร์
upload4.JPG (35.73 KiB) Viewed 893 times
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41238
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: [Joomla 2.5]การทำ Form Upload File บน Joomla

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เพิ่มการอัพโหลด แล้วย่อภาพอัตโนมัติ
จากงาน DMH ส่วนของ อัพโหลด รูปสมาชิก ด้วยครับ
(พี่เอา class upload มาใช้ใน Joomla)
เอามาเฉพาะส่วน Model ก็พอนะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21993
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: [Joomla 2.5]การทำ Form Upload File บน Joomla

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 18