2014-09-01 6 views
0

Я не могу понять, почему 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 типы файлов.

+0

Хм, это странно. Если я добавлю «image/*», то при просмотре файлов для меня не появятся, только папки – Lodder

+0

Для меня отображаются все файлы изображений, но загрузка ограничена. странно. Как в backend, так и в интерфейсе. – user1876234

+0

Можете ли вы показать PHP, который вы используете для управления файлом? Это может быть вызвано этим. Если у вас нет PHP для управления им, то, пожалуйста, убедитесь, что вы делаете, поскольку предоставленный вами XML-код ничего не сделает, кроме отображения поля формы. – Lodder

ответ

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

Если вы уже написали загрузки файла метода контроллера на стороне сервера и вы подтвердили все другие предложения, не проблема, вы должны включить код в ваш вопрос, есть вероятность, что там ошибка происходит.

Смежные вопросы