Ограничение отправляемых файлов по типу и размеру

Подскажите как можно задать ограничение при отправке файлов через форму (FormIt+AjaxForm) по размеру и типу файлов? И как вывести ошибку если файл не был загружен?

Сейчас код такого типа

<form class="" method="post" enctype="multipart/form-data">
    <div class="bodyform">
        <div class="mgroup">Прикрепите файл: <input type="file" class="file" name="file" value="[[+fi.file]] /></div>
        <div class="mgroup">Укажите эл.почту: <input id="fileEmail" class="form-control" type="email" name="fileEmail" value="[[+fi.fileEmail]]" /> <span class="error_fileEmail">[[+fi.error.fileEmail]]</span></div>
        <div class="mgroup"><button class="send" type="submit"> Отправить</button> </div>
    </div>
</form>
В форме всего 2 поля (Прикрепить файл и эл.почта)

[[!AjaxForm@?
  &snippet=`FormIt`
  &hooks=`spam,email`
  &emailSubject=`отправка файла`
  &emailTo=`[[++email]]`
  &emailFrom=`[[++email_noreply]]`
  &emailTpl=`file.email`
  &formFields=`fileEmail`  
  &fieldNames=`fileEmail==Эл.почта`
  &validate=`fileEmail:required`
  &validationErrorMessage=`В форме содержатся ошибки!`
  &successMessage=`Сообщение успешно отправлено`
  &fileEmail.vTextRequired=`Вы не ввели адрес эл.почты!`
]]
Сергей
03 августа 2016, 15:41
modx.pro
1
1 244
0

Комментарии: 1

Владислав
04 августа 2016, 13:49
0
Нужно написать сниппет который будет проверять отправленные файлы.

$types = array('image/jpeg', 'image/png');
if (!in_array($_FILES['file']['type'], $types)){
    echo 'Недопустимый тип файла.';
    return false;
}
как то так.

Таким же образом проверить размер файла можно $_FILES['file']['size']

Потом этот сниппет добавить первым в &hooks.

Главное не забудь вернуть true если валидация прошла успешно.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1