PHP:保存对文件的POST响应

时间:2010-02-22 04:05:26

标签: php post

我遇到了从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);

它可以部分保存图像,最多可保存20k左右,保留图像底部未保存。

(编辑)这是工作代码,使用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 个答案:

答案 0 :(得分:1)

不确定它会有所帮助,但是如果您尝试使用fread而不是fgets - 第一个是“二进制安全”,而第二个停在线端则会怎么样...考虑你试图从二进制流中读取,而不是文本文件,可能会改变一些东西吗?

如果它没有改变一个东西,另一个想法是尝试使用file_get_contents,整体下载文件,而不是必须做某种循环。

如果它仍然不起作用,那么curl呢?