2011-05-25 181 views
0

問候,從URL發送cURL請求?

我正在尋找一種方式來發送curl請求給出一個完整的url。所有的實例和文檔,我可以找到這個樣子:

$fullFilePath = 'C:\temp\test.jpg'; 
$upload_url = 'http://www.example.com/uploadtarget.php'; 
$params = array(
    'photo'=>"@$fullFilePath", 
    'title'=>$title 
);  

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_URL, $upload_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 
$response = curl_exec($ch); 
curl_close($ch); 

的問題是,該文件,「test.jpg放在」實際上是通過動態的腳本在服務器上生成(所以它不存在在文件系統上)。

如何發送請求,而不是使用$文件=「http://www.mysite.com/generate/new_image.jpg」浮現在腦海

一種溶液裝入「new_image.jpg」到fopen或file_get_contents()的內存中,但一旦我到達那一點,我不知道如何將它作爲POST發送到另一個站點

回答

1

到目前爲止,最簡單的解決方案是將文件寫入臨時位置,然後在cURL請求完成後將其刪除:

// assume $img contains the image file 
$filepath = 'C:\temp\tmp_image_' . rand() . '.jpg' 
file_put_contents($filepath, $img); 
$params = array(
    'photo'=>"@$filepath", 
    'title'=>$title 
);  
// do cURL request using $params... 

unlink($filepath); 

請注意,我插入一個隨機數以避免競爭狀況。如果您的圖片不是特別大,最好在您的文件名中使用md5($img)而不是rand(),其中可能仍然會導致衝突。

+0

這種方法的工作原理,我希望避免保存副本,但它似乎是我唯一的選擇。感謝您的幫助 - – pws5068 2011-05-25 20:16:02

+0

@ pws5068這是可能的,但它基本上需要手動構建帖子。你可能不想這樣做。 – lonesomeday 2011-05-25 20:17:57