从URL发送cURL请求?

问题描述

| 问候, 我正在寻找一种发送给定完整URL的curl请求的方法。我可以找到的所有示例和文档如下所示:
$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,CURLOPT_POSTFIELDS,$params);
$response = curl_exec($ch);
curl_close($ch);
问题是\“ test.jpg \”文件实际上是由服务器上的脚本动态生成的(因此在文件系统上不存在)。 如何发送请求,而不是使用$ file = \“ http://www.mysite.com/generate/new_image.jpg \” 我想到的一种解决方案是使用fopen或file_get_contents()将\“ new_image.jpg \”加载到内存中,但是一旦到达这一点,我不确定如何将它作为POST发送到另一个站点     

解决方法

到目前为止,最简单的解决方案是将文件写入一个临时位置,然后在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()
,否则仍可能导致冲突。