На MAX_FILE_SIZE
Читать это:
... В http://pk.php.net/manual/en/features.file-upload.post-method.php и эквивалентных местах в других форматах, говорятся , что браузеры значения поля формы MAX_FILE_SIZE в счет.
Эта информация повторяется в другом месте в Интернете и в книгах, но по-видимому, происходит из документации PHP (он не появляется в с точки зрения других серверных технологий).
Там нет ничего ни в одном из HTML, HTTP или связанные с ним спецификации указать , что это так (в частности, RFC 1867, который представил файл добавления в HTML не упоминает его, так что это не даже случай kludge , который упоминался в первом RFC, а затем опустился), и он не делает смысл в контексте спецификаций HTML (нет никакого указания какой-либо связи между этим конкретным скрытым вводом и вводом файла) , Единственными утверждениями о скрытых полях, которые я мог найти в любом из них, были предупреждения в разделах соображений безопасности против пользовательских агентов , основываясь на любых связанных с файлами операциях над чем-либо, упомянутым в скрытом поле .
Невозможно отобразить браузеры как «расширение». Действительно, учитывая, что есть потенциально другие возможные значения для скрытого поля с , это имя в приложении, обрабатывающем несколько загрузок файлов, было бы считаться дефектом дизайна, каким бы ни было.
Я утверждаю, что такого механизма в обычных браузерах нет (если вообще есть ), и действительно этого не должно быть. Ссылка на него следует опустить из документации .
Я бы также предположил, что, поскольку эта идея распространилась из этой документации в другом месте, добавление примечания об этом не должно быть .
Если механизм требуется или желательно для более быстрой обработки этого вида обработки файла проблемы, то он требует функциональности, чтобы позволить PHP перехватывать потоки загружается до завершения запроса, который бы совершенно иначе, как эта документацию предложить это следует рассматривать, даже если бы это было правдой ...
ниже код приходит от реализации PHP SWFUpload:
// Check post_max_size (http://us3.php.net/manual/en/features.file-upload.php#73762)
$POST_MAX_SIZE = ini_get('post_max_size');
$unit = strtoupper(substr($POST_MAX_SIZE, -1));
$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
header("HTTP/1.1 500 Internal Server Error");
echo "POST exceeded maximum allowed size.";
exit(0);
}
// Validate the file size (Warning the largest files supported by this code is 2GB)
$max_file_size_in_bytes = 2147483647;
$file_size = @filesize($_FILES[$upload_name]["tmp_name"]);
if (!$file_size || $file_size > $max_file_size_in_bytes) {
HandleError("File exceeds the maximum allowed size");
exit(0);
}
+1; хорошее исследование. – strager
'вам нужно проверить, что загруженный файл был меньше MAX_FILE_SIZE, используя PHP' no, вы этого не делаете. Просто избавиться от этого бесполезного поля –
«требует функциональности, позволяющей PHP перехватывать потоки, загружаемые до завершения запроса» -> PHP может перехватить запрос, если его длина превышает предел, указанный в 'post_max_size', но для этого требуется, чтобы браузер отправил заголовок запроса, содержащий 'Content-Length', а из современных браузеров Opera просто посылает этот заголовок. –