2010-02-22 69 views
1

我在保存POST請求響應中的文件時遇到問題。PHP:將POST回覆保存到文件

我正在使用Google Charts API使用POST請求創建圖表。然後我試圖將結果保存爲圖像。 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左右,而使圖像的底部

這裏描述我下面的API文檔未保存。

(編輯)這裏是工作的代碼,使用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

不知道它會幫助,但如果你嘗試使用fread,而不是fgets - 第一個是「二進制安全」 ,而第二個停止在行結束......考慮到你試圖讀取二進制流,而不是文本文件,也許這可以改變一些東西?

如果它不改變一件事情,另一個想法是嘗試使用file_get_contents,作爲一個整體下載文件,而不是做一些類型的循環。

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

+0

使用fread而不是fgets獲得相同的結果 - 只有大約一半的文件被保存。 – Goro

+0

curl work well :) – Goro

+0

奇怪,關於'fread' /'fgets';但很好,捲曲工作:-) –