В этом примере у меня есть простая форма электронной почты с несколькими полями и полем файла для необязательного вложения.
В JavaScript у меня есть что-то вроде следующего:
Код: Выделить всё
let form = document.querySelector('form');
let formData = new FormData();
formData.append('name', form.elements['mail'].value);
formData.append('email', form.elements['email'].value);
formData.append('subject', form.elements['subject'].value);
formData.append('message', form.elements['message'].value);
formData.append('attachment', form.elements['attachment'].files[0]);
let response = await fetch('process.php', {
method: "POST",
body: formData,
});
console.log(response.text();
Код: Выделить всё
# .user.ini
post_max_size=8M
upload_max_filesize=8M
Код: Выделить всё
// process.php
die(print_r($_POST, true));
Дело в том, что если размер прикрепленного файла превышает ограничение, массив $_POST пуст. Если прикрепленного файла нет или размер файла находится в пределах ограничения, массив $_POST заполняется, и я могу проверить ошибки и обработать его соответствующим образом.
Это не поведение, если я отправляю форму традиционным способом. Тогда я все равно получаю опубликованные данные и могу проверить их и отправить соответствующий отзыв.
Как мне получить опубликованные данные, даже если вложение слишком велико?
Подробнее здесь: https://stackoverflow.com/questions/798 ... -too-large
Мобильная версия