目前我必须在服务器上下载图像并将其发布如下:
$photo = array(
'message' => 'Status',
'source' => '@/full/path/of/the/image.png'
);
$response = $fb->api('/'.$album.'/photos', 'POST', $photo);
我在后端使用curl发布此请求,它的工作就像一个魅力。 我想知道是否可以直接发布远程图像而不是下载本地副本?
我试着这样做:
$photo = array(
'message' => 'Status',
'source' => file_get_contents('http://www.domain.com/image.png')
);
$response = $fb->api('/'.$album.'/photos', 'POST', $photo);
但我从图API中得到一个例外:“(#324)需要上传文件”
当你没有发送在发送数据数组时自动设置的multipart / data标头时,会发生这种情况($data
是一个数组)。
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
所以我怀疑发布远程图像是否可行。 你觉得怎么样?
答案 0 :(得分:2)
只需在参数名称url
下提供该照片的网址即可上传照片。
这个信息隐藏在description of the photo
endpoint中,只是说,
“您还可以通过提供带有照片网址的网址参数来发布照片。”
因此,不要提供source
参数,只需向url
提供照片可公开访问的网址的值即可。 (除source
之外的所有其他参数保持不变,并且仍然可以以相同的方式使用。)
我最近尝试了这个,它工作得很好。虽然,我只尝试使用来自我的应用领域的网址的照片 - 我不能说肯定如果它适用于网络上“任何地方”的网址(虽然我看不到为什么不应该这样做的一个很好的理由。