问候,
我正在寻找一种在给定完整网址的情况下发送卷曲请求的方法。我能找到的所有示例和文档都是这样的:
$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”实际上是由服务器上的脚本动态生成的(因此文件系统上不存在)。
如何发送请求,而不是使用$ file =“http://www.mysite.com/generate/new_image.jpg”
想到的一个解决方案是使用fopen或file_get_contents()将“new_image.jpg”加载到内存中但是一旦我到达那一点,我不确定如何将其作为POST发送到另一个站点
答案 0 :(得分: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()
,可能仍然会导致冲突。