尝试通过Joomla管理员组件字段上传图像,但没有发生

时间:2016-08-03 03:53:16

标签: php joomla

我正在尝试通过Joomla管理员组件上传图片

在administrator \ components \ com_toys \ models \ forms \ variant.xml中我定义了

<?xml version="1.0" encoding="utf-8"?>
<form enctype="multipart/form-data">
<fieldset>
<field name="id" type="text" readonly="true" class="readonly" default="0" description="JGLOBAL_FIELD_ID_DESC"/>
<field name="v_prod_id" type="sql" label="Select Brand"/>   
<field name="v_name" type="text" label="Select Model"/>
<field name="v_descr" type="editor" buttons="true" filter="safehtml" label="Toy Details"/>
<field name="v_price" type="text" label="Price"/>   
<field name="v_small_img" type="file" label="Select Image"/>

<field name="state" type="list" label="JSTATUS" description="JFIELD_PUBLISHED_DESC" class="inputbox" size="1" default="0">
  <option value="1">JPUBLISHED</option>
  <option value="0">JUNPUBLISHED</option>
  <option value="2">JARCHIVED</option>
  <option value="-2">JTRASHED</option>
</field>

在控制器管理员\ components \ com_toys \ controllers \ variant.php中尝试检索该文件,如下所示

但该文件既未上传也未保存在目录 - / images / uploads / variants /中,也未保存在数据库中

有人可以帮助解决错误,为什么文件没有得到保存

更新 这很简单,因为我不知道Joomla通过声明字段类型来构建内置解决方案&#34; /&GT;

2 个答案:

答案 0 :(得分:1)

您使用的是错误的表单名称

$files = $jinput->files->get('jform');

它不是jform它是v_small_img

所以使用这个

    $input = new JInput;

    $file = $input->get('v_small_img', '', 'post'); 

当你有$ file时,也不要再使用$ _FILES。请改用

$file['tmp_name']; JFile::makeSafe($file['name']);

无论您使用$ _FILES。

更新完整代码更改

public function save($key = null, $urlVar = null)
{
    $input = new JInput;

    $file = $input->get('v_small_img', '', 'post');
    //$file = $files['image'];

    $db = JFactory::getDBO();
    //$post   = JRequest::get( 'post' );
    $FILE_PATH= JPATH_BASE ."/images/uploads/variants/";
    //$StrFiles="";

    if((file_exists($file['tmp_name']))){
        if($file['name']!=""){
            $dt = time()."s";
            if(!JFile::upload($file['tmp_name'],$FILE_PATH.JFile::makeSafe($dt."_".$file['name']))){
                return JError::raiseWarning( 500, "Unable To upload File ".$file['name']);
            }else{
               // $StrFiles .=JFile::makeSafe($dt."_".$file['name']);
            }
        } else {
        return JError::raiseWarning( 500, "File name cannot be empty.");
    }
    }
    /*if($StrFiles){
        $post['v_small_img']= $StrFiles;
    }*/
}

答案 1 :(得分:0)

<强>更新 这很容易,因为我不知道Joomla通过声明字段来内置解决方案 输入

<field name="v_small_img" type="media" directory="<upload path>" />

通过选择可以在所需目录中轻松加载图像 同时 - 感谢Amit ray尝试