使用模块在joomla中上传文件

upload file in joomla using a module

我正在尝试创建一个特定的模块来上传文件。

我正在使用此代码:

客户端:

<?php 
// No direct access
defined('_JEXEC') or die; $resposta =""; ?>
<form name="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file_upload" />
<input type="submit" name="submit_file" value="submit_file"/>
<input type="text" name="resposta" value=<?php echo $resposta; ?> />
</form>

我的模块:

<?php
   defined('_JEXEC') or die;

include_once __DIR__ . '/helper.php';

//trigger the event 


// Instantiate global document object
 defined('_JEXEC') or die;

   // Include the syndicate functions only once
   require_once dirname(__FILE__) . '/helper.php';

   $resposta = ModuploadfileHelper::getuploadfile($params);
   require JModuleHelper::getLayoutPath('mod_upload_file');


?>

我的帮手:

<?php


   class ModuploadfileHelper {


      public static function getuploadfile($params) {
         /*
            * File upload example
                                    */
        //Retrieve file details from uploaded file, sent from upload form
        $file = JFactory::getApplication()->input->get('file_upload');

        //Import filesystem libraries. Perhaps not necessary, but does not hurt
        jimport('joomla.filesystem.file');

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

        //Set up the source and destination of the file
        $src = $file['tmp_name'];
        $dest = JPATH_COMPONENT . DS . "uploads" . DS . $filename;
        if(!JFolder::exists($dest))
        {
            $mode = 0755;
            JFolder::create($dest, $mode);
        }
        $resposta = null;
        //First check if the file has the right extension, we need jpg only
        if (strtolower(JFile::getExt($filename)) == 'jpg') 
        {
        // TODO: Add security checks

            if (JFile::upload($src, $dest))
            {
                $resposta = "Sucesso ao arquivar a imagem";
            }    
            else
            {
                $resposta = "Insucesso ao arquivar a imagem";
            }
        }
        else
        {
            $resposta = "O ficheiro não é uma imagem";
        }
         return $resposta;
      }
   }

?>

第一个问题:这样的东西有用吗? 第二个问题:如何执行触发让模块工作?

第十三个问题:如何将模块传递给ajax? 我有这样的东西:

模块代码:

<?php
   defined('_JEXEC') or die;

include_once __DIR__ . '/helper.php';

// Instantiate global document object
 defined('_JEXEC') or die;

   // Include the syndicate functions only once
   require_once dirname(__FILE__) . '/helper.php';

   $resposta = ModuploadfileHelper::getuploadfile($params);


defined('_JEXEC') or die;

include_once __DIR__ . '/helper.php';

// Instantiate global document object
$doc = JFactory::getDocument();

$js = <<<JS
(function ($) {
    $(document).on('click', 'input[type=submit]', function () {
            formdata = new FormData();
            var file = this.files[0];
            formdata.append("image", file);

        $.ajax({
            type   : 'POST',
            data   : request,
            success: function (response) {
                $('.search-results').html(response);
            }
        });
        return false;
    });
})(jQuery)
JS;


$doc->addScriptDeclaration($js);
require JModuleHelper::getLayoutPath('mod_upload_file');

?>

请帮帮我。

有可能,您需要做的是使用 Joomla ajax 界面。

在此处查看文档:https://docs.joomla.org/Using_Joomla_Ajax_Interface

有一个实现此功能的模块的完整示例,您可以轻松修改以适应文件上传: https://github.com/Joomla-Ajax-Interface/Ajax-Session-Module