tags:

views:

41

answers:

1

i custom a parameter to add a button upload <input type="file" name="file">

But how to upload when we are in com_template

+1  A: 

There are couple of things you need to tweak to make the upload work.

  1. Change form's enctype to enctype="multipart/form-data"
  2. If using MVC architecture, add task and controller to the form.

Uploading of file is pretty easy, because Joomla has filesystem package in place. All you need to upload the file is to call JFile::upload($src, $dest).

Read about filesystem package, you will find a lot of useful stuff. Here is the link http://docs.joomla.org/How_to_use_the_filesystem_package

Here is what uploading code looks like (from Joomla documentation)

/**
 * Uploading function for Joomla
 * @param int $max maximum allowed site of file
 * @param string $module_dir path to where to upload file
 * @param string $file_type allowed file type
 * @return string response message
 */    
function fileUpload($max, $module_dir, $file_type){
        //Retrieve file details from uploaded file, sent from upload form
        $file = JRequest::getVar('file_upload', null, 'files', 'array'); 
        // Retorna: Array ( [name] => mod_simpleupload_1.2.1.zip [type] => application/zip 
        // [tmp_name] => /tmp/phpo3VG9F [error] => 0 [size] => 4463 ) 

        if(isset($file)){ 
                //Clean up filename to get rid of strange characters like spaces etc
                $filename = JFile::makeSafe($file['name']);

                if($file['size'] > $max) $msg = JText::_('ONLY_FILES_UNDER').' '.$max;
                //Set up the source and destination of the file

                $src = $file['tmp_name'];
                $dest = $module_dir . DS . $filename;

                //First check if the file has the right extension, we need jpg only
                if ($file['type'] == $file_type || $file_type == '*') { 
                   if ( JFile::upload($src, $dest) ) {

                       //Redirect to a page of your choice
                        $msg = JText::_('FILE_SAVE_AS').' '.$dest;
                   } else {
                          //Redirect and throw an error message
                        $msg = JText::_('ERROR_IN_UPLOAD');
                   }
                } else {
                   //Redirect and notify user file is not right extension
                        $msg = JText::_('FILE_TYPE_INVALID');
                }

        }
        return $msg;
}
Alex