Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
 Аватар для |VoroN|
13 / 13 / 11
Регистрация: 24.04.2011
Сообщений: 109

Как перехватить ошибку о недопустимом размере загружаемого файла

29.08.2014, 18:26. Показов 3517. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, меня всегда волновала такая проблема - как перехватить вот такую ошибку:
Warning: POST Content-Length of 9466213 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
Она возникает от того, что пользователь, пытается передать файл, больше чем 8 Мб на сервер и сколько бы я не пробовал ее как то перехватить - ни чего не выходит. Такая фишка как $_FILES[userfile][error] вообще бесполезна, равно как try catch'и и вызов собственных функций для обработки ошибок, ибо эта ошибка, выдается еще до начала работы самого скрипта (line 0), а в массив $_FILES вообще ни чего не приходит, и он как бы остается не в теме и знать не знает что был какой-то там файл и почему он не загрузился. Как добиться того, что бы по нормальному обработать эту ошибку и, например, сообщить пользователю о превышении допустимых размеров файла?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.08.2014, 18:26
Ответы с готовыми решениями:

Как перехватить ошибку
При переборе списка происходит запуск запросов, какихто запросов нет, как перехватить ошибку чтобы ничего не происходило

Как вывести название загружаемого файла?
Загружаю файл этим кодом:<?php $uploadfile = "images/".$_FILES; move_uploaded_file($_FILES, $uploadfile); ?> Как вывести...

Как вывести имя загружаемого файла?
После загрузки файла выдает: "Файл успешно загружен." , а мене нужно "Файл ххх успешно загружен." где ххх - имя файла который...

10
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
29.08.2014, 18:38
поместить в форму скрытое поле
HTML5
1
<input type="hidden" name="MAX_FILE_SIZE" value ="10000">
гарантий нет, но и других вариантов тоже
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
29.08.2014, 18:46
Лучший ответ Сообщение было отмечено |VoroN| как решение

Решение

Есть более кастомное решение, - HTML5 File API.

Как только пользователь выбрал файл - тут же смотрим его размер и если что не так - ругаемся, если все окей - загружаем ajax'ом на сервер.

В таком случае обрабатывать эту ошибку нет необходимости (нужно только отключить отображение ошибок), т.к. единственный кто на неё сможет натолкнуться - некий злоумышленник пытающийся отправить слишком большой файл (интересно зачем ему это?).
1
 Аватар для |VoroN|
13 / 13 / 11
Регистрация: 24.04.2011
Сообщений: 109
29.08.2014, 19:51  [ТС]
ads пробовал, не работает, да и вроде бы она уже не всеми браузерами поддерживается как устаревшая.

Добавлено через 8 минут
Tatikoma Вот это уже поинтересней, спасибо за наводочку.

Добавлено через 53 минуты
Tatikoma Еще раз спасибо, посидел, почитал, апробировал и теперь стыдно что раньше не знал о такой простой вещи) Всего то несколько строк JS/jQuery кода:
HTML5
1
<input id="my_file" type="file" name="upfile" />
JavaScript
1
2
3
4
5
6
$("#my_file").on("change", function(){
    var file = this.files[0];
    if (file.size > 2097152) {
         alert("Недопустимый размер файла");
    }
  });
0
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
29.08.2014, 19:52
Цитата Сообщение от Tatikoma Посмотреть сообщение
Есть более кастомное решение, - HTML5 File API.
ето интереснее, да вот только точно также не всеми браузерами поддерживается. html5 дофига API предлагает, да ни одно еще толком кроме как в хроме не работает.. хотя время идет возможно и другие браузеры подтянулись
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
 Аватар для Tatikoma
260 / 224 / 109
Регистрация: 07.07.2014
Сообщений: 965
29.08.2014, 19:55
Цитата Сообщение от ads Посмотреть сообщение
ето интереснее, да вот только точно также не всеми браузерами поддерживается. html5 дофига API предлагает, да ни одно еще толком кроме как в хроме не работает.. хотя время идет возможно и другие браузеры подтянулись
http://caniuse.com/#feat=fileapi

Не вижу каких-либо причин отказываться от столь чудесного функционала из небольшого процента пещерных жителей.
0
29.08.2014, 20:05

Не по теме:

Цитата Сообщение от Tatikoma Посмотреть сообщение
Не вижу каких-либо причин отказываться от столь чудесного функционала из небольшого процента пещерных жителей.
спор уже не по теме, но пещерные жители(их большинство) пока что запросто посылают продвинутые сайты подальше.. потому что им влом качать продвинутый браузер

0
29.08.2014, 20:09

Не по теме:

Цитата Сообщение от ads Посмотреть сообщение
спор уже не по теме, но пещерные жители(их большинство) пока что запросто посылают продвинутые сайты подальше.. потому что им влом качать продвинутый браузер
Глупости. http://gs.statcounter.com/#bro... 307-201407

Впрочем для пещерных жителей можно добавить polyfill:
http://html5please.com/#polyfill

Что никоим образом не отменяет их пещерности.

0
29.08.2014, 20:20

Не по теме:

Цитата Сообщение от Tatikoma Посмотреть сообщение
Глупости
Глупость - давать ничем не обоснованные характеристики. По вашему же графику пользователи хрома занимают меньше половины всех пользователей. Этот браузер максимально поддерживает новые эксперементальные функции html5. Остальные браузеры вообще не дают никакой гарантии поддержки. Записывать пользователей в "пещерные жители" хамство какое-то и самодовольство разработчика..

0
29.08.2014, 20:48

Не по теме:

Цитата Сообщение от ads Посмотреть сообщение
Глупость - давать ничем не обоснованные характеристики. По вашему же графику пользователи хрома занимают меньше половины всех пользователей. Этот браузер максимально поддерживает новые эксперементальные функции html5. Остальные браузеры вообще не дают никакой гарантии поддержки. Записывать пользователей в "пещерные жители" хамство какое-то и самодовольство разработчика..
Вы зря игнорируете ссылку на поддержку браузерами и библиотеку polyfill. У кого не будет работать - действительно пещерный житель. И вообще, что вы так обижаетесь?

0
29.08.2014, 21:28

Не по теме:

Цитата Сообщение от Tatikoma Посмотреть сообщение
И вообще, что вы так обижаетесь?
хы. я ни на кого никогда не обижаюсь. любое возражение подвигает к поиску истины. и я обязательно посмотрю все что вы предлагаете посмотреть. В любом случае, наша с Вами беседа полезна. Лично мне. Другим участникам польза или вред будет в зависимости от того как они ее воспримут. Удачи! :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.08.2014, 21:28
Помогаю со студенческими работами здесь

Как перехватить ошибку о уникальности?
В таблице есть поле Login с первичным ключом. Т. е. нельзя добавить два одинаковых логина. Как мне перехватить ошибку ввода одинаковых...

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

Как изменить максимальный размер загружаемого файла в K2
Пожалуйста, подскажите: как изменить максимальный размер загружаемого файла в K2 (по умолчанию 2М)?

как перехватить EDatabaseError, не устраняя ошибку.
Здравствуйте, помогите пожалуйста перехватить такую ошибку: Мне не надо переключать Table8 в состоянии ввода или редактирования, а...

Таблица ADVStringGrid: Как перехватить ошибку?
Есть таблица ADVStringGrid, в ней определенные столбцы определены как FloatFormat, т.е. доступен ввод только числовых значений с двумя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru