【问题标题】:What is the @ notation in file upload? (specifically facebook ads api)文件上传中的@符号是什么? (特别是 facebook 广告 api)
【发布时间】:2014-08-21 01:53:57
【问题描述】:

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

我目前按照 API 文档(上面的链接)中的描述使用参数 'pic.jpg' 和值 '@https://s3.amazonaws.com/path/to/my/image.jpg' 发出发布请求,但响应是一个空数组而不是 JSON 对象API 文档中显示的“图像”键(以上链接)。

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

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

【问题讨论】:

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


    【解决方案1】:

    首先,如果您想在 Facebook Ads API 上上传图片,您不能提供 URL,您必须为其提供真实路径。

    在很多情况下,您可以直接使用 '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

    【讨论】:

      【解决方案2】:

      @ 功能是上传文件。例如 curl 和 PHP 支持它。所以如果你添加一个https链接,它不起作用并不奇怪

      【讨论】:

      • 好的,所以它不起作用并不奇怪,但是为什么以及如何解决它?
      • API 要求您上传图片。所以你不能给它一个URL。在本地下载图片,然后上传到 Facebook
      • 广告 API 是否如此,但通用 API 不是这样?
      • 它是否允许 URL 完全取决于 API。阅读您链接到的文档,我找不到任何说它允许 URL 的内容。如果其他 API 允许 URL,我假设他们是这样说的
      猜你喜欢
      • 2018-01-23
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多