Как я могу ограничить пользователей от загрузки более 5 МБ на сервер? - PullRequest
1 голос
/ 18 декабря 2010

У меня есть проверка через php, чтобы определить, является ли файл большим, проблема в том, что пользователь должен сначала загрузить файл на сервер, прежде чем я смогу выполнить проверку.

Поэтому, если кто-то захочет тратить мою пропускную способность, все, что ему нужно сделать, - это, например, переименовать огромный файл в .jpg и загрузить его.И я ничего не могу сделать, чтобы остановить их

Должен быть какой-то способ предотвратить это.Какой-то действительный чек или jquery или что-то в этом роде.

Мне нужно решение, которое позволило бы мне уведомить пользователя о том, что файл, который он пытается загрузить, слишком велик.

Спасибо.

Ответы [ 3 ]

1 голос
/ 18 декабря 2010

Вы можете использовать эту скрытую функцию: MAX_FILE_SIZE

Скрытое поле MAX_FILE_SIZE (измеряется в байтах) должно предшествовать полю ввода файла, а егозначение - максимальный размер файла, принятый PHP.Этот элемент формы всегда следует использовать, поскольку он избавляет пользователей от необходимости ждать передачи большого файла только для того, чтобы определить, что он слишком большой и передача не удалась.Имейте в виду: обмануть этот параметр на стороне браузера довольно просто, поэтому никогда не полагайтесь на файлы большего размера, блокируемые этой функцией.Это просто удобная функция для пользователей на стороне клиента приложения.Однако настройки PHP (на стороне сервера) для максимального размера обмануть невозможно.

подробности: http://php.net/manual/en/features.file-upload.post-method.php

1 голос
/ 18 декабря 2010

Если вы беспокоитесь о потере пропускной способности, вы должны справиться с этим на более высоком уровне в вашем стеке серверов. К тому времени, когда PHP обрабатывает файл, уже слишком поздно, загрузка уже произошла, и полоса пропускания занята.

Apache имеет несколько директив конфигурации, которые могут быть полезны:

http://httpd.apache.org/docs/current/mod/core.html#limitrequestbody

Но я не уверен, что даже это фактически обрезает запрос, когда тело превышает лимит. Если нет, вам придется подняться на еще один уровень и обработать его на уровне TCP.

Если вы хотите пойти по не-PHP-маршруту, чтобы попытаться заблокировать большие загрузки, вам следует обратиться к ServerFault вместо StackOverflow.

0 голосов
/ 18 декабря 2010

Вы можете ограничить максимальный размер загрузки в качестве настройки PHP.Пользователь по-прежнему сможет загружать файлы этого размера до тех пор, пока сервер не отменит их, и он не обязательно будет заранее знать, что файл слишком большой.См. MDN https://developer.mozilla.org/en/using_files_from_web_applications

С его помощью вы можете проверить размер и т. Д. С помощью JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...