文件上传中的@符号是什么? (特别是facebook ads api)

时间:2014-06-30 16:08:22

标签: facebook facebook-graph-api file-upload facebook-ads-api

我正在使用Facebook Ads API,并且想知道广告图片的制作方式。这个页面https://developers.facebook.com/docs/reference/ads-api/adimage/#create使它看起来很简单,除了我不确定'test.jpg =@test.jpg'是怎么回事。什么是@ for以及它是如何工作的?

我目前在API文档(上面的链接)中描述了一个带有参数'pic.jpg'的帖子请求,其值为'@ https://s3.amazonaws.com/path/to/my/image.jpg',但响应是一个空数组而不是JSON对象使用API​​文档(上面的链接)中显示的'images'键。

有人可以解释在HTTP请求中指定文件的想法/过程/语法,或者更具体的Facebook Ads API吗?我不确定这里有什么用。

编辑: (我应该提一下,我正在使用python请求库。)

2 个答案:

答案 0 :(得分:0)

@功能是上传文件。例如,它由curl和PHP支持。因此,如果您添加https链接,那么它不起作用并不奇怪

答案 1 :(得分:0)

首先,如果您想在Facebook Ads API上传图片,则无法提供网址,您必须为其提供真实路径。

在很多情况下,您可以直接使用'image_url'&给出图像的URL,但在某些情况下,您需要将图像上传到Facebook并使用它提供的HASH。

 PHP / cURL实现


    $myPhoto = realpath('c.jpg');

       $ch = curl_init();

       $data = array('name' => "@{$myPhoto}",'access_token' => "{$access_token}");

       $urlStr = "https://graph.facebook.com/act_{$ad_account_id}/adimages";

       curl_setopt($ch, CURLOPT_URL, $urlStr);
       curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    

       $output = curl_exec($ch);

知道如何使用Python发布文件(参见:http://docs.python-requests.org/en/latest/user/quickstart/#post-a-multipart-encoded-file

此外,您可以使用此库为您完成所有工作:https://github.com/jgorset/facepy