Правильно ли читать параметры POST-запроса в PHP для запроса более 1450 B? - PullRequest
4 голосов
/ 20 июля 2010

Я получаю запрос 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 и method, и один файл с именем original_filename.png размером 1460 байт.

К сожалению, мой массив $ _POST пуст. Что странно, если orginal_filename.png меньше 1450 байт. $ _POST содержит все параметры, а stdin пуст.

Я бы хотел иметь возможность читать эти поля, как обычный человеческий PHP из $ _POST.

Что нужно сделать, чтобы правильно прочитать параметры этого запроса POST из $ _POST?

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Есть ли что-нибудь в переменной $_FILES?

Есть ли элемент MAX_FILE_SIZE в отправленной форме?

Какие здесь значения?

echo 'post_max_size = ' . ini_get('post_max_size') . "\n";
echo 'upload_max_filesize = ' . ini_get('upload_max_filesize') . "\n";
1 голос
/ 20 июля 2010

Как я только что прочитал в руководстве, необработанные данные постов недоступны с enctype = "multipart / form-data", но вы также можете попробовать с

$fp = fopen('php://stdin', 'rb');

Обратите внимание на " b"флаг.

Также убедитесь, что always_populate_post_data = On в вашем php.ini

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...