|
|
|
| Для проверки закачиваемых файлов использую встроенную в php функцию:
if ($_FILES['my_file']['error']>0)
{
switch($_FILES['my_file']['error'])
{
case 1: $msg_errors[]="Размер файла больше 1.6 мб."; break;
case 2: $msg_errors[]="Размер файла больше 1.6 мб."; break;
case 3: $msg_errors[]="Загружена только часть файла"; break;
case 4: $msg_errors[]="Выберете файл для загрузки"; break;
}
return;
}
|
Но тут заметил одну аномалию:
Если закачиваю файл больше 1.6мб, но меньше ~20мб , то все работает нормально и выдается ошибка. Но если закачиваю файл больше 20мб, то ошибок не возникает. Как такое может быть ? О_О | |
|
|
|
|
|
|
|
|
для: Trianon
(14.09.2008 в 12:32)
| | Попробовал обработать и другие ошибки - тот же результат. Если файл не намного больше предельного размера, то выдается ошибка, если файл больше предельного размера на 10 мб, то файл проходит через фильтр О_О | |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 12:49)
| | is_uploaded_file() вам поможет. | |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 12:49)
| | >если файл больше предельного размера на 10 мб, то файл проходит через фильтр О_О
То есть поле error равно нулю и функцией move_uploaded_file() удается такой файл поместить в каталог?
Ой, сомнительно.
Вероятно, на больших файлах другие ошибки вылезают. Превышение post_max_size или что-то подобное... | |
|
|
|
|
|
|
|
для: Trianon
(14.09.2008 в 12:58)
| | Если файл больше 1.6мб, но меньше ~ 10мб , то скрипт работает верно и выдает ошибку: Размер файла больше 1.6 мб.
Но если файл больше ~ 10мб, то ошибка не выдается и файл проходит уже последующие проверки.. | |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 13:04)
| | >Если файл больше 1.6мб, но меньше ~ 10мб , то скрипт работает верно и выдает ошибку: Размер файла больше 1.6 мб.
>Но если файл больше ~ 10мб, то ошибка не выдается и файл проходит уже последующие проверки..
Я спросил не про то, прошел ли файл проверки. Я спросил, оказался ли он на сервере в конечном итоге с полной длиной и неискаженным содержимым. В это как-то не верится. | |
|
|
|
|
|
|
|
для: Trianon
(14.09.2008 в 13:15)
| | Нет, файл не закачивается. | |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 13:24)
| | Вот и проверяйте. | |
|
|
|
|
|
|
|
для: sim5
(14.09.2008 в 13:25)
| | Вопрос собственно остается открытым: Получается, что встроенный обработчик ошибок слегка багнутый? | |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 13:29)
| | Размер файла проверяю по размеру закачнного в tpm, а не так. Если не закачан, проверяю ошибку, например на размер. Надо проверить такую ситуация, пока не встречалось, возможно и есть сбой. | |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 13:29)
| | включите display spartup errors . Наверняка увидите что-то вроде
Warning: POST Content-Length of 14160765 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
Начиная с php 5.2.0 эту ошибку можно даже отследить с помощью error_get_last()
Если версия помладше - и сильно надо - придется ковырять логи php.
В любом случае в массиве $_FILES элемент создан не будет .
Я бы не сказал, что это то же самое , что и "файл проверку прошел". | |
|
|
|
|
|
|
|
для: Trianon
(14.09.2008 в 13:45)
| | Спасибо, теперь все нормально работает! | |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 13:24)
| | Значит, Вы какую-то другую ошибочную ситуацию пропустили. Проверяйте. | |
|
|
|
|
|
|
|
для: Trianon
(14.09.2008 в 13:28)
| | А как я мог что-то пропустить, если последующие фильтры учитывают, что встроенный обработчик не выдал ошибок?
if ($_FILES['my_file']['error']=0).. Последующие фильтры
|
| |
|
|
|
|
|
|
|
для: Dorimer
(14.09.2008 в 13:32)
| | Встроенный обработчик ничего не говорит просто потому, что стартап-процесс отрезал вообще всё тело запроса.
До средств загрузки файла этот файл просто недошел.
можно, конечно, корить разработчиков php, что они так реализовали стартап.
Но это если Вам шашечки. Если ехать - см ранее. | |
|
|
|