PHP: сохранение ответа POST в файл - PullRequest
1 голос
/ 22 февраля 2010

У меня проблема с сохранением файла из ответа на запрос POST.

Я использую Google Charts API для создания диаграммы с помощью запроса POST. Затем я пытаюсь сохранить результат в виде изображения.

Я следую документации API, как описано здесь: http://code.google.com/apis/chart/docs/post_requests.html

Вот мой код:

$file = fopen($url, 'r', false, $context);
$file2 = fopen("test.png", 'w');

while (!feof($file)) {
    $buffer = fgets($file, 8192);
    fwrite($file2, $buffer);
}
fclose($file);

Сохраняет изображение частично, до 20 тыс. Или около того, оставляя нижнюю часть изображения несохраненной.

(правка) Вот рабочий код, использующий curl:

$handle = curl_init($url);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_FILE, $file);
curl_setopt($handle,CURLOPT_POST,count($request));
curl_setopt($handle, CURLOPT_POSTFIELDS, $request_string);
$data = curl_exec($handle);

1 Ответ

1 голос
/ 22 февраля 2010

Не уверен, что это поможет, но что, если вы попробуете использовать fread вместо fgets - первый - «бинарный безопасный», а второйостанавливается на конце строки ... Учитывая, что вы пытаетесь читать из двоичного потока, а не из текстового файла, может, это может что-то изменить?

Если это ничего не изменит, другая идея будетпопробуйте использовать file_get_contents, чтобы загрузить файл целиком, вместо того, чтобы делать какой-то цикл.

И если он все еще не работает, как насчет curl?

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