Joomla - 如何将按钮上传文件添加到模板参数并上传文件?

时间:2010-09-11 08:16:58

标签: joomla

我自定义了一个参数来添加按钮上传<input type="file" name="file">

但是当我们在com_template

时如何上传

1 个答案:

答案 0 :(得分:3)

您需要调整一些内容才能使上传工作。

  1. 将表单的enctype更改为enctype="multipart/form-data"
  2. 如果使用MVC架构,请在表单中添加taskcontroller
  3. 上传文件非常简单,因为Joomla有filesystem个包。您上传文件所需的只是致电JFile::upload($src, $dest)

    阅读文件系统包,你会发现很多有用的东西。这是链接http://docs.joomla.org/How_to_use_the_filesystem_package

    以下是上传代码的内容(来自Joomla文档)

    /**
     * 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;
    }