文件上传不允许
问题描述:
我无法找出为什么Joomla不允许通过.xml创建的表单上传图片。文件上传不允许
我有一个文件上传现场
<field name="nuotrauka" type="file"
label="COM_DALYVIAI_FORM_LBL_DALYVIS_NUOTRAUKA"
description="COM_DALYVIAI_FORM_DESC_DALYVIS_NUOTRAUKA"
upload_directory="/images/"
accept="image/*" />
表格后提交,我得到错误: “错误: 此文件类型是不允许的”
我试图为.jpg,.png文件类型。
答
问题是Joomla文件字段只不过是生成表单字段来选择文件的一种手段。这意味着在提交表单时,核心中没有内置逻辑来处理文件提交服务器端。您需要向组件控制器添加逻辑以从请求中获取信息并将其保存在需要的位置。我从需要文件上传的项目控制器粘贴了一个示例方法。
public function upload() {
//JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
$jinput = JFactory::getApplication()->input;
jimport('joomla.filesystem.file');
// We're putting all our files in a directory called images.
$path = 'images/uploaded/';
// The posted data, for reference
$file = $jinput->get('value', '', 'string');
$name = $jinput->get('name', '', 'string');
// Get the mime
$getMime = explode('.', $name);
$mime = end($getMime);
// Separate out the data
$data = explode(',', $file);
echo "<h1>" . $path . $name . "</h1>";
// Encode it correctly
$encodedData = str_replace(' ','+',$data[1]);
$decodedData = base64_decode($encodedData);
//if (JFile::upload($decodedData, $path . $name)) {
if(file_put_contents($path . $name, $decodedData)) {
JError::raiseNotice(null, $name . ": uploaded successfully");
} else {
// Show an error message should something go wrong.
JError::raiseError(null, "Something went wrong. Check that the file isn't corrupted");
}
}
如果您已经编写服务器端的文件上传控制器的方法和您确认所有其他建议都没有问题,你应该在你的问题中的代码,没准这就是错误的是发生。
嗯,这很奇怪。如果我添加'image/*',那么在浏览时没有文件出现,只有文件夹 – Lodder 2014-09-01 09:02:09
对我而言,所有图像文件都会显示,但上传受限。奇怪的。 都在后端和前端。 – user1876234 2014-09-01 09:06:17
您能否显示您用来管理文件的PHP?这可能是由此造成的。如果你没有PHP来管理它,那么请确保你这样做,因为你提供的XML代码除了显示表单域 – Lodder 2014-09-01 09:08:09