От уровня TCP да будет разделен Ваш большой буфер, когда это будет слишком большим, и он будет объединен, когда это слишком маленькое.
От прикладного уровня, не позволяйте своему приложению иметь дело с неограниченные буферные размеры . На некотором уровне необходимо разделить их.
, Если Вы отправляете файл по сокету и возможно обрабатываете некоторые из данных этого файла, как сжатие его. Тогда необходимо разделить это на блоки. Иначе Вы будете использовать слишком много RAM, когда Вы в конечном счете случайно встретите большой файл, и Ваша программа будет вне RAM.
RAM не является единственной проблемой. Если Ваш буфер становится слишком большим, можно провести слишком много времени, читая в данных, или обрабатывая его, и Вы не будете использовать сокет, который находится, там ожидая данных. Поэтому лучше иметь параметр для размера буфера так, чтобы можно было определить значение, которое не является слишком маленьким, ни слишком большим.
Мое требование не состоит в том, что сокет TCP не может обработать большой блок данных, он может и я предложить использовать более крупные буферы при отправке для получения лучшей эффективности. Мое требование состоит в том, чтобы просто сделать не, имеют дело с неограниченными буферными размерами в Вашем приложении.
В какой строке вы получаете это предупреждение? Если это тот, у которого есть $ _ POST ['изображение']
, то это логично, вы не найдете загруженные данные файла в $ _ POST
, это в $ _ FILES
Какой уровень отчетов об ошибках вы используете?
error_reporting (E_ALL)
включит полную отчетность и может дать вам подсказку.
Как описано ранее, распечатайте $ _ FILES
с помощью var_dump ()
или print_r ()
, чтобы увидеть информацию для вашего файла.
echo "Picture=" . $_POST['picture'] . "<br/>";
Переменная POST
$_POST['picture']
не существует, поэтому да, она выдаст неопределенную ошибку.
Я не могу комментировать, поэтому скажу здесь.
MAN, это эхо выведет имя файла! Оно работает! Он сказал, что это работает.
Интересно, что базовое имя загруженного файла выводится, поэтому я считаю, что PHP действительно видел файл [...]
Хороший намек: попробуйте var_dump
$ _ FILES
и добавьте сюда его содержимое. У вас может быть ошибка из-за слишком большого размера файла или другая полезная информация.
попробуйте добавить
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
перед
<input type = "file" id="picture" name="picture"/>