1

我有点坚持这一点。我有这段代码设法获取我的文件的文件名:

class AControllerA extends JControllerForm
{
    function save()
    {
        //Upload file
        jimport('joomla.filesystem.file');
        $jinput = JFactory::getApplication()->input;
        $store_form = $jinput->get('jform', null, 'array');
            $file = $store_form['img_url'];
        echo $file;
     }
}

*文件字段名称为jform[img_url];

但是我似乎无法获得文件的“tmp_name”。有人知道我错过了什么吗?我对 jinput 的工作方式有点困惑...... jrequest 很容易工作。谢谢!

模型/表格/a.xml

<form enctype="multipart/form-data">
        <fieldset>
        <field
                        name="img_url"
                        type="file"
                        label=""
                        description=""
                        size="40"
                        class="inputbox"
                        default=""
                />
       </fieldset>
</form>
4

3 回答 3

5

像这样怎么样:

$files = $input->files->get('jform', null);
$filename = $files['img_url']['tmp_name'];
echo $filename;

查看使用 JInput 检索文件数据的文档

于 2013-03-28T07:56:09.870 回答
3

假设您正在使用 JForm 和文件输入类型,那么您可以使用以下命令访问该文件:

$files = $jinput->files->get('jform');
$file = $files['img_url']['tmp_name']

还要确保您的表单具有enctype="multipart/form-data"设置,否则它将无法正常工作。

于 2013-03-28T07:58:04.360 回答
2

在你的模型中,你应该有这样的东西

 public function getForm($data = array(), $loadData = false)
    {
        /**
         * Get the Form
         */
        $form = $this->loadForm('com_mycomponent.mycomponent', 'mycomponent',
                                        array('control' => false, 'load_data' => $loadData));
        if (empty($form)) {
            return false;
        }
        return $form;
    }

注意 $loaddata 和 'control' 设置为 false,当 'control' 为 false 时,您可以根据 xml 中指定的名称获取文件参数,即输出形式如下:

<input name="name in xml file" type="file" />

如果'控制' => 'jform'

<input name="jform[name in xml file]" type="file" />

$loaddata= false 意味着您不需要从数据库中获取任何数据到表单。

在你的 view.html.php 你应该有这样的东西

public function display($tpl = null)
    {
        $this->formData = $this->get('Form');
        $this->addToolbar();
        parent::display($tpl);
    }

假设我将在“mycomponent”控制器的“上传”方法中收到请求的文件,那么它应该有这样的东西:

class MycomponentControllerMycomponent extends JControllerAdmin
{
public function upload()
    {
        //Retrieve file details from uploaded file, sent from upload form
        $file = JFactory::getApplication()->input->files->get('name in xml 
        **$tmp_name** = $file['tmp_name'];

    }
}

$tmp_name 是您需要的名称

于 2013-12-04T06:23:38.190 回答