Nginx + PHP7-FPM Content-Type пусто $ FILES - PullRequest
0 голосов
/ 04 июля 2018

Когда я пытаюсь отправить файлы, используя PostMan и заголовок Content-Type , для которого установлены значения любого типа, массив $ FILES полностью пуст.

Если я удалю этот заголовок, я смогу увидеть файл в массиве.

Я пробовал много разных значений для этого заголовка, но, похоже, ни одно из них не работает.

Проблема в том, что я работаю с внешним поставщиком, и его программное обеспечение не может удалить этот заголовок из запроса POST

со следующей конфигурацией:

  • Nginx / 1.12.2
  • PHP 7.0.28

И следующий конфиг на nginx vhost:

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

1 Ответ

0 голосов
/ 12 июля 2018

Для работы $_FILES необходимо отправить заголовок content-type, установленный на multipart/form-data. Если вы установите его для чего-либо еще, сервер не будет знать, как получить отправленный вами файл.

Тело запроса также должно быть в формате, который требуется multipart/form-data. Это делается автоматически библиотеками загрузки файлов (и браузерами).

Теперь причина, по которой он работает при удалении заголовка content-type, заключается в том, что Postman автоматически добавляет его при включении файла в запрос и форматирует весь запрос в формате multipart/form-data.

...