Я получаю запрос POST на моем скрипте api.php. Содержимое красного цвета, используя этот код:
$fp = fopen('php://stdin', 'r'); $all = ""; while($line = fgets($fp, 4096)) { $all .= $line; } echo $all;
выглядит так:
------------V2ymHFg03ehbqgZCaKO6jy Content-Disposition: form-data; name="intro" O ------------V2ymHFg03ehbqgZCaKO6jy Content-Disposition: form-data; name="title" T ------------V2ymHFg03ehbqgZCaKO6jy Content-Disposition: form-data; name="apiKey" 98d32fdsa ------------V2ymHFg03ehbqgZCaKO6jy Content-Disposition: form-data; name="method" /media/add ------------V2ymHFg03ehbqgZCaKO6jy Content-Disposition: form-data; name="upload_field"; filename="original_filename.png" Content-Type: image/png ------------V2ymHFg03ehbqgZCaKO6jy--
Как вы можете видеть, я получаю 4 параметра под названием intro, title, apiKey и метод и один файл с именем original_filename.png размером 1460 байт.
К сожалению, мой массив $ _POST пуст. Что странно, когда orginal_filename.png меньше 1450 байтов $ _POST содержит все параметры, а stdin пуст.
Я хотел бы иметь возможность читать эти поля, как обычный человеческий PHP, от $ _POST.
Что делать, чтобы правильно прочитать параметры запроса POST из $ _POST?
Как я только что прочитал в руководстве, исходные данные не доступны с enctype = "multipart / form-data", но вы также можете попробовать
$fp = fopen('php://stdin', 'rb');
Обратите внимание на флаг « b ».
Кроме того, убедитесь, что always_populate_post_data = On в php.ini
Есть ли что-нибудь в переменной $_FILES
?
Есть ли элемент MAX_FILE_SIZE
в представленной форме?
Каковы значения здесь?
echo 'post_max_size = ' . ini_get('post_max_size') . "\n"; echo 'upload_max_filesize = ' . ini_get('upload_max_filesize') . "\n";