我的表单中有一个类型为file的字段。当用户点击保存图标时,我想自然地将文件上传到服务器并将文件名保存在数据库中。我尝试通过回显文件名来测试它,但它似乎没有工作。另外,如何将文件名添加到数据库?它是在模型中完成的吗?谢谢!
控制器/ customcom.php
jimport('joomla.filesystem.file');
class CustomComControllerCustomCom extends JControllerForm
{
function save()
{
$file = JRequest::getVar('img_url', null, 'files', 'array');
$filename = JFile::makeSafe($file['name']);
echo $filename;
}
}
模型/形式/ customcom.xml
<?xml version="1.0" encoding="utf-8"?>
<form enctype="multipart/form-data">
<fieldset>
<field
name="img_url"
type="file"
label="Image upload"
description=""
size="40"
class="inputbox"
default=""
/>
</fieldset>
</form>
答案 0 :(得分:7)
刚想通了。
正确的方法是
$jinput = JFactory::getApplication()->input;
$files = $jinput->files->get('jform');
$file = $files['img_url'];
这应该可以解决问题。 然后$ file数组包含以下键:
我删除了原来的答案,因为它有误导性。
答案 1 :(得分:3)
获得媒体经理的启发:
请注意,此组件已经很老了(重构正在准备中)
// Import dependencies
jimport('joomla.filesystem.file')
// Get input
$input = JFactory::getApplication()->input;
// Get uploaded file info
$file_info = $input->files->get('img_url', null);
// This will hold error
$error = null;
// Check if there was upload at all, mime is correct, file size, XSS, whatever...
if (!MycomponentHelper::canUpload($file_info, $error)
{
$this->setError('problem: ' . $error);
return false;
}
// Move uploaded file destination
JFile::upload($file_info['tmp_name'], $destination);