在Apigee存储资产

时间:2014-09-06 06:53:42

标签: javascript node.js apigee

我正在尝试将资源上传到apigee baas,我在这里跟踪文档: http://apigee.com/docs/api-baas/content/assets

这是我的代码:

    var querystring = require('querystring');

    var data = querystring.stringify({
        filename: 'car_123.jpg', //asset's name on Apigee
        file_location: 'http://cdn.xxxx.com/cars/123.jpg' //asset's original destination
    });

    var target_url = "https://api.usergrid.com/<org>/<app>/cars/<uuid>?access_token=dummyaccesstokenfor_SO"

    var options = {
        method: 'POST',
        url: target_url,
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': Buffer.byteLength(data)
        }
    };

    var request = require('request');

    request(options, function(err, data) {
        if (err) {
            console.log(err)
        } else {
            console.log('success')    
        };
    });

当我运行此功能时,我收到了成功消息。我想相信来自cdn的图像是物理的 复制到Apigee。似乎不是真的

因为,当我发出GET时     https://api.usergrid.com/org/app/cars/uuid?access_token=dummyaccesstokenfor_SO标题为&#39;接受:image / jpeg&#39;,我得到的就是这个

  

文件名= cars_123.jpg&安培; file_location =&#39; http://cdn.xxxx.com/cars/123.jpg

没有base64图片字符串或图片网址。

我哪里错了?

编辑:我在BaaS GUI中看不到任何内容

EDIT2:根据remus的建议

  

curl -X POST -i -F name =&#39; apple-128&#39; -F file = @&#34; https://cdn4.iconfinder.com/data/icons/flat-brand-logo-2/512/apple-128.png&#34; &#39; http://requestb.in/11xu3h61&#39;

这导致

  卷曲:(26)无法打开文件&#34; https://cdn4.iconfinder.com/data/icons/flat-brand-logo-2/512/apple-128.png&#34;

这里使用的cdn只是一个占位符。但我的cdn的结果是一样的。因此,即使在POST之前它也会失败。让我想知道文件位置是否完全可以是http位置?

1 个答案:

答案 0 :(得分:1)

您调用的端点应该看起来像/{org}/{app}/{collection}/{entity uuid},其中包含Accept:image / jpg标头。此外,如果您查看BaaS GUI,您应该在那里看到包含文件详细信息和内容长度的实体。

由于它仍然不起作用,这里是一个正确上传资产的CURL命令:

curl -X POST -i -F name='image' -F file=@"/path/to/image.jpg" 'https://api.usergrid.com/{org}/{app}/{collection}/{uuid}'

您可以针对requestbin尝试对此CURL和Node方法进行POST,并比较结果吗?