我正在尝试通过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;
答案 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尝试