Upload. $_FILES['f']['error'] == 2 не при любых случаях превышения MAX_FILE_SIZE?

Сергей123

Новичок
Upload. $_FILES['f']['error'] == 2 не при любых случаях превышения MAX_FILE_SIZE?

Интересно стало просто (какие-то основы, видимо, не знаю, но какие?)...

Код
PHP:
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="987">
<input name="f" type="file"> <input type="submit">
</form>
<?php echo $_FILES['f']['error']; ?>
для файла, скажем, 11K, выводит код 2 (т.е. The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.), а для, скажем, 3K - код 0.

-~{}~ 26.10.04 10:25:

[всё ещё не разобрался]
 

dnes

Новичок
<input type="hidden" name="MAX_FILE_SIZE" value="987">

Может я сейчас скажу какую-нибудь глупость, но не маловато ли будет?
 

Фанат

oncle terrible
Команда форума
dnes, скажешь-скажешь, не сомневайся.
ты предлагаешь поставить 100 мегабайт и тестировать по три часа одну закачку?
 

TuBu

Guest
Кстати, проблема имеет место быть

PHP 4.3.8
FreeBSD 5.2

При MAX_FILE_SIZE = 800, $_FILES['f']['error'] == 0 для файлов размером до 5119 байтов

При MAX_FILE_SIZE = 5120, $_FILES['f']['error'] == 0 для файлов размером до 10238 байтов
 

neko

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

точнее не файл пролез в буфер а превышение размера было на последнем куске
вот

-~{}~ 26.10.04 12:09:

для файлов размером до 5119 байтов
#define FILLUNIT (1024 * 5)

:)
 

dnes

Новичок
Фанат

:) Зато тема-то как красиво пошла! Буду следить с большим интересом: сам с этим всегда жмурюсь.
 

Фанат

oncle terrible
Команда форума
с чем ты жмуришься? С этим полем? А смысла в этом хоть капля есть?
Какой браузер его поддерживает?
Какой в нем смысл на таких мизерных величинах?
Вопрос представляет чисто академический интерес, и neko, по-моему, на него прекрасно ответил, за что ему большое спасибо
 

TuBu

Guest
Короче ясно

MAX_FILE_SIZE на самом деле не то, что прописывается в форме, а минимальное число, кратное 5119 и большее MAX_FILE_SIZE из формы.

Во как.

А вопрос - это да, чисто академический
 

dnes

Новичок
Бресь Сергей
Ну а как решил-то? Поле убрал?

Фанат
Слежу с большим академическим интересом.
 

Сергей123

Новичок
dnes, ёлки!
У меня нет проблем с реализацией upload'а ввиду наличия $_FILES['f']['error'], $_FILES['f']['size'] и общего академического знакомства с оператором if.
 

dnes

Новичок
Бресь Сергей, палки, это-то я как-то сразу понял (очевидно в силу поверхностного знакомства с оператором if).

А вот со всем остальным я, пожалуй, поупражняюсь и вернусь.
 

SiMM

Новичок
Автор оригинала: TuBu
MAX_FILE_SIZE на самом деле не то, что прописывается в форме, а минимальное число, кратное 5119 и большее MAX_FILE_SIZE из формы.
Надо полагать, имелось в виду кратное 5120 ;)
Получается что это MAX_FILE_SIZE какое-то уж совсем глупое, раз на стороне клиента не проверяется.
 

spiteful_troll

Новичок
Upload. $_FILES['f']['error'] == 2

Wse eto horo6o kone4no... i tema po6la... no NIKTO TAK I NE OTWETIL na wopros "Po4emu wse-taki $_FILES['f']['error'] == 2 esli filesize($_FILES['f']['tmp_name']) < $max_file_size "... Zaranee blagodaren i zhdu otweta...
 

Сергей123

Новичок
spiteful_troll,
правдоподобное предположение по МОЕМУ вопросу было высказано.
У тебя какой-то другой вопрос, вчитайся.
 
Сверху