Page 1 of 1

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

Posted: 14/11/2012 11:42 am
by tsukasaz
การทำ Form Upload File บน Joomla

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

Code: Select all

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

Code: Select all

    
    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

Code: Select all

jimport('joomla.filesystem.file'); 

Code: Select all

    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

Code: Select all

<?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 445 times
กด save ถ้าสำเร็จจะขึ้นตามภาพด้านล่าง
กด save
กด save
upload3.JPG (20.42 KiB) Viewed 445 times
แล้วมาดูในฐานข้อมูล กับ ในโฟลเดอร์ที่ใช้เก็บไฟล์
ตรวจสอบในฐานและในโฟลเดอร์
ตรวจสอบในฐานและในโฟลเดอร์
upload4.JPG (35.73 KiB) Viewed 445 times

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

Posted: 14/11/2012 11:54 am
by mindphp
เพิ่มการอัพโหลด แล้วย่อภาพอัตโนมัติ
จากงาน DMH ส่วนของ อัพโหลด รูปสมาชิก ด้วยครับ
(พี่เอา class upload มาใช้ใน Joomla)
เอามาเฉพาะส่วน Model ก็พอนะครับ

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

Posted: 14/11/2012 4:00 pm
by tsukasaz