Я использую apache, PHP.
Таким образом, для php даже я устанавливаю максимальный размер файла, если кто-то загружает огромный файл, он загрузит все это на сервер, а затем возвращает ошибку PHP. это правильно?
Я бы хотел, чтобы веб-сервер или PHP остановились, когда размер файла или размер запроса больше определенного размера.
есть ли способ сделать это? Я помню что-то вроде установки post_max_size или установки чего-то в apache.conf, но не уверен, что он остановится, когда файл перейдет к максимальному пределу.
Apache LimitRequestBody , afaik, он просто останавливает соединение при переходе ….
max_execution_time и max_input_time. Эти параметры определяют максимальный срок службы сценария и время, затрачиваемое скриптом на прием входных данных. Если передается несколько мегабайт данных, max_input_time должно быть достаточно высоким. Вы можете переопределить параметр ini-файла для max_input_time, вызвав функцию set_time_limit () в ваших сценариях.
Это взято из http://www.radinks.com/upload/config.php
Если вы установите более низкие значения для этих ini-записей, сценарий должен истечь до завершения загрузки
Невозможно остановить это со стороны сервера – файл все равно будет загружен до того, как PHP решит, следует ли его отклонить. Вам нужно будет добавить это обнаружение на стороне клиента. Хотя вы не можете сделать это с помощью обычной формы HTML, Flash-загрузчики могут узнать размер файла до начала загрузки.
На стороне сервера вы не можете делать ничего полезного с PHP – файлы всегда были полностью загружены, прежде чем PHP сможет сказать «нет». Чтобы заблокировать загрузку (то есть отключите часть клиентской части через POST), вам понадобится магия веб-сервера ниже стека. Перлбал способен это сделать. Написание собственного модуля Apache – это решение (грубая сила). Использование любого вида облегченного прокси-сервера перед вашим основным веб-сервером является решением, если вы беспокоитесь о больших загрузках, связывающих ресурсы веб-сервера.
Это действительно зависит от того, почему вы хотите ограничить большие загрузки. Если это нужно, чтобы сохранить время пользователя, просто добавьте сообщение, определяющее максимальный размер файла. Если это серверные ресурсы, используйте легкий прокси-сервер перед сервером. Если это что-то еще, ну, что это?
Используйте скрытое поле MAX_FILE_SIZE
со значением, указывающим максимальный размер файла в байтах. См. Пример № 1 на этой странице для получения дополнительной информации.
<!-- The data encoding type, enctype, MUST be specified as below --> <form enctype="multipart/form-data" action="__URL__" method="POST"> <!-- MAX_FILE_SIZE must precede the file input field --> <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> <!-- Name of input element determines name in $_FILES array --> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form>
Вот простое решение jquery. Как проверить размер ввода файла с помощью jQuery? Но проверка на стороне клиента может быть легко взломана.
Используйте $ _FILES в php.
if($_FILES['name']['size'] > $limit){ // continue; }
Используйте таймер (тайм-аут) для каждой загрузки с помощью функции прогресса сеанса в PHP 5.5 и измерьте среднее время на размер загрузки.