POST-данные исчезают при загрузке больших файлов - PullRequest
7 голосов
/ 21 мая 2010

У меня проблемы с утилитой загрузки файлов в моем PHP-приложении. При отправке больших файлов (9 МБ +) через форму я получаю очень странное поведение: данные POST, которые я включил в форму, исчезают, включая информацию о файле.

Я уже увеличил все ограничения PHP (ограничение по времени, максимальное время ввода, максимальный размер публикации, ограничение памяти и максимальный размер загружаемого файла), и я все еще не могу получить правильное поведение. Я пытался заменить обычные формы HTTP решением на основе Flash (SWFUpload, www.swfupload.org), но поведение оставалось прежним.

Я пробовал несколько файлов одинакового размера, и это определенно не является конкретной проблемой файла. Я отладил POST-переменные, отправленные с помощью Firebug, и в заголовке вместе с файлом все еще есть правильные переменные.

Что здесь может происходить?

Ответы [ 4 ]

2 голосов
/ 29 декабря 2010

Хорошо, я думаю, у меня есть решение. Вы должны проверить и директиву post_max_size, и $_SERVER['CONTENT_LENGTH'], поэтому если $ _SERVER ['CONTENT_LENGTH'] превосходит post_max_size, это означает, что они пытаются загрузить слишком много данных.

$POST_MAX_SIZE = ini_get('post_max_size');
$mul = substr($POST_MAX_SIZE, -1);
$mul = ($mul == 'M' ? 1048576 : ($mul == 'K' ? 1024 : ($mul == 'G' ? 1073741824 : 1)));
if( $_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE && $POST_MAX_SIZE )
{
    $error = true;
}

Решение взято отсюда: http://www.php.net/manual/en/features.file-upload.php#73762

2 голосов
/ 21 мая 2010

Веб-серверы также можно настроить для ограничения размера запросов. Если вы используете Apache, ознакомьтесь с директивой LimitRequestBody .

1 голос
/ 21 мая 2010

попробуйте загрузить небольшие файлы размером 1 - 2 МБ. Если вы все еще не можете опубликовать код.

надеюсь, что вы добавили enctype = '/ multipart / form-data' в определение формы.

0 голосов
/ 21 мая 2010

На каком сервере вы работаете? Я думаю, что некоторые серверы ОС имеют ограниченный набор размера файлов, которые они позволяют. Это значение можно изменить.

...