不允许上传文件

时间:2014-09-01 08:47:59

标签: joomla joomla3.3

我无法找出为什么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文件类型。

1 个答案:

答案 0 :(得分:0)

问题是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");
    }
}

如果您已经编写了服务器端文件上传控制器方法并且您已经确认所有其他建议都不是问题,那么您应该在问题中包含代码,因为这样做的可能性很小。发生错误的地方。