Почему мы не можем использовать $_POST вместо $_FILES для доступа к загруженному файлу в PHP?

Когда я пытаюсь получить доступ к загруженному файлу с помощью $_POST, я не получаю никакой информации, но если я использую $_FILES, я получу все материалы, связанные с загруженным файлом.

Почему мы не можем использовать $_POST вместо $_FILES?

На самом деле на это нет ответа, за исключением того, что PHP был разработан много лет назад. Именно так это и работает — суперглобальная переменная $_POST содержит данные поля сообщения, $_FILES содержит метаданные ввода файла. Они могли бы сделать другой выбор 20 с лишним лет назад, но не сделали этого.

Michael Berkowski 31.01.2019 18:20

@Майкл Берковски, но мы должны знать причину этого, поскольку мы разработчики

Amol Khaire 31.01.2019 18:40

@AmolKhaire, почему должен мы?

Martin 31.01.2019 18:40

Я не согласен с тем, что мы должны знать причину. Если вы хотите узнать причину, Расмус может ответить на ваш запрос по электронной почте. Лично меня эта причина волнует не больше, чем то, почему цикл C for имеет такой синтаксис.

Michael Berkowski 31.01.2019 18:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
35
1

Ответы 1

Это языковое дизайнерское решение, который давно сделали создатели PHP. Вы можете спросить создателя PHP Расмуса Лердорфа (https://en.wikipedia.org/wiki/Расмус_Лердорф).

Однако есть несколько веских причин, по которым я могу подумать о разделении $_POST и $_FILES.

Из документов:

The global $_FILES will contain all the uploaded file information. [...] Files will, by default be stored in the server's default temporary directory, unless another location has been given with the upload_tmp_dir directive in php.ini. The server's default directory can be changed by setting the environment variable TMPDIR in the environment in which PHP runs. Setting it using putenv() from within a PHP script will not work. This environment variable can also be used to make sure that other operations are working on uploaded files, as well.

Массив $_FILES содержит такую ​​информацию, как имя, тип, размер, временное имя, информацию об ошибке, временное местоположение и так далее. Таким образом, для файла требуется много информации, и он имеет отдельные данные, хранящиеся в каком-то временном месте.

Массив $_POST в основном содержит отправленные текстовые строки. Поэтому я предполагаю, что проектное решение было принято только потому, что полезно четко разделить эти переменные.

Другие вопросы по теме