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


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

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

User avatar
tsukasaz
PHP VIP Members
PHP VIP Members
Posts: 10601
Joined: 18/04/2012 9:39 am

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

Post by tsukasaz » 14/11/2012 11:42 am

การทำ 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>
ทดสอบการทำงาน เลือกไฟล์ที่ต้องการ
[Joomla 2.5]การทำ Form Upload File บน Joomla upload2.JPG
เลือกไฟล์
upload2.JPG (15.97 KiB) Viewed 358 times
กด save ถ้าสำเร็จจะขึ้นตามภาพด้านล่าง
[Joomla 2.5]การทำ Form Upload File บน Joomla upload3.JPG
กด save
upload3.JPG (20.42 KiB) Viewed 358 times
แล้วมาดูในฐานข้อมูล กับ ในโฟลเดอร์ที่ใช้เก็บไฟล์
[Joomla 2.5]การทำ Form Upload File บน Joomla upload4.JPG
ตรวจสอบในฐานและในโฟลเดอร์
upload4.JPG (35.73 KiB) Viewed 358 times
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22627
Joined: 22/09/2008 6:18 pm
Contact:

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

Post by mindphp » 14/11/2012 11:54 am

เพิ่มการอัพโหลด แล้วย่อภาพอัตโนมัติ
จากงาน 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

User avatar
tsukasaz
PHP VIP Members
PHP VIP Members
Posts: 10601
Joined: 18/04/2012 9:39 am

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

Post by tsukasaz » 14/11/2012 4:00 pm

The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)

Post Reply

Return to “Joomla Developing Knowledge”

Users browsing this forum: No registered users and 2 guests