Skip to main content

Joomla uploading a file in custom component in admin

Did you ever create a custom component in joomla, that has a functionality of admin uploading a file?  Reference

There are 3 things that you need to be aware of:

First is under your form attribute, please make sure that you have enctype="multipart/form-data".
Second thing is when you grab the file at server site, please make sure the name is same as what you named on your HTML. In this case is, $file = JRequest::getVar( 'image', '', 'files', 'array');
Then make sure you include the necessarylibraries in your admin model file:

jimport('joomla.filesystem.file');
jimport('joomla.filesystem.folder');

Form code:

<form action="index.php" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data">
  <input class="inputbox" name="image" type="file" id="upload_file" />
</form>

PHP code in your component admin model method:

function store()
{
$file = JRequest::getVar( 'image', '', 'files', 'array');
jimport('joomla.client.helper');
JClientHelper::setCredentialsFromRequest('ftp');
$file['name']   = JFile::makeSafe($file['name']);
$filename = strtolower($file['name']);
$filename = str_replace(' ', '_', $filename);               
$filename = time().'_'.$filename;               
  
$src = $file['tmp_name'];
$dest = '../images/stories/audio/'. $filename; // create a folder 'audio' inside images/stories

JFile::upload($src, $dest);
}

Comments

Popular posts from this blog

Joomla validate chrono forms using jquery

It is a common practice to use Chrono forms in our joomla site to setup various forms in the site, be it a contact us form, submit a ticket form, or whatever. I have set the option "validate form" to "No" under chronoform settings in admin panel, and also preferred to not include any js or css files. For validating the chrono forms, i prefer jquery. So first lets add jquery support in our joomla. It is quite simple: 1. Download jquery.js and jquery_min.js (1.4.2 version is enough) and place them in media/system/js folder of your joomla. 2. Edit libraries->joomla->html->html->behavior.php, and add the following function below the mootools() function: function jQuery($debug = null)     {         static $loaded;         global $mainframe;         // Only load once         if ($loaded) {    ...

php get content between tags

This involves parsing the dom document. <?php function getTextBetweenTags($tag, $html) {     $dom = new domDocument;     @$dom->loadHTML($html);         $dom->preserveWhiteSpace = false;     $content = $dom->getElementsByTagname($tag);     $out = array();         foreach ($content as $item)     {         $out[] = $item->nodeValue;     }     return $out; } $xhtml = '<tag>abc def</tag><tag>123 456</tag>'; $content2 = getTextBetweenTags('tag', $xhtml); foreach( $content2 as $item ) {     echo $item.'<br />'; } ?> Output: abc def 123 456

joomla remove category name in url

-) If anyone is using the lyftenbloggie component, and want to remove the component name and category title from the sef url, follow this hack: (Note: You also need to install the lyftenbloggie extension for ARTIO SEF) Under components/com_sef/joomsef.php, After this code: $location = array();         foreach ($title as $titlePart) {             if (strlen($titlePart) == 0) continue;             $location[] = JoomSEF::_titleToLocation($titlePart);         } Just add this code: if($location[0] == 'lyftenbloggie')         {         $temp_sef = end($location);         $location = array();            $location[] = $temp_sef;         ...