Отправка файла через ajaxform
Создал в линуксовом редакторе (libreoffice) файл в формате odt. Размер 3 Мб. Отправляю через ajaxform файл. В списке разрешённых этот формат прописал. Ограничение у меня — 8 Мб. Но в ответ выдаёт ошибку «Произошла ошибка при загрузке файла на сервер».
такую же ошибку выдаёт при попытке загрузить docx-файл, сохранённый в том же libreoffice. Тут документ 15 Мб. По идее в этом случае должен выдавать ошибку, что размер больше разрешённого.
вот вызов ajaxform:
такую же ошибку выдаёт при попытке загрузить docx-файл, сохранённый в том же libreoffice. Тут документ 15 Мб. По идее в этом случае должен выдавать ошибку, что размер больше разрешённого.
вот вызов ajaxform:
[[!AjaxForm?
&snippet=`FormIt`
&form=`etclimateFeedBackFormTpl`
&hooks=`email`
&customValidators=`etclimateCheckForm`
&emailSubject=`Заявка на бесплатную консультацию`
&emailTo=`my@e-mail.ru`
&emailFrom=`no-reply@e-mail.ru`
&emailFromName=`Company`
&emailTpl=`etclimateMailTpl`
&validate=`name:required,phone:required,files:etclimateCheckForm`
&validationErrorMessage=`Пожалуйста, исправьте ошибки!`
&successMessage=`Ваше сообщение успешно отправлено!`
]]
вот сниппет:<?php
// инициализируем переменную output, отвечающую за результат работы хука, со значением true
$output = true;
// разрешённые расширения файлов
$allowedExt = array('docx','doc','txt','pdf', 'odt', 'odf');
// максимальный размер файла (8 Мбайт)
$maxFileSize = 8 * 1024 * 1024;
// если ассоциатианый массив $_FILES[$keys] существует, то
if(isset($_FILES[$key]["error"])) {
// переберём все файлы (изображения)
foreach ($_FILES[$key]["error"] as $fkey => $error) {
// если ошибок не возникло, т.е. файл был успешно загружен на сервер, то...
if ($error == UPLOAD_ERR_OK) {
// имя файла
$fileName = basename($_FILES[$key]['name'][$fkey]);
// расширение файла
$fileExt = mb_strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
// размер файла
$fileSize = filesize($_FILES[$key]['tmp_name'][$fkey]);
// проверка расширения файла
if(!in_array($fileExt, $allowedExt)) {
// файл имеет недопустимый тип
$errorMsg = 'Файл ' . $fileName . ' имеет не разрешённый тип. ';
$validator->addError($key, $errorMsg);
$output = false; // возвращаем false
break;
}
if($fileSize > $maxFileSize) {
// файл имеет размер больше максимального
$errorMsg = 'Файл '. $fileName .' имеет не разрешённый размер.';
$validator->addError($key,$errorMsg);
$output = false; // возвращаем false
break;
}
} else {
// произошла ошибка при загрузке файла на сервер
$errorMsg = 'Произошла ошибка при загрузке файла ' . $fileName .' на сервер.';
$validator->addError($key,$errorMsg);
$output = false; // возвращаем false
break;
}
}
}
return $output;
Комментарии: 2
Без AjaxForm работает?
не проверял
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.