Apigee:无法上传资产的二进制数据

时间:2013-12-19 16:24:43

标签: javascript apigee

我知道这是一个测试版功能,但我无处可去。我可以创建资产,但是当我尝试上传数据时,我没有得到任何有用的东西。这就是我正在做的(javascript):

this.uploadImageData = function(asset, imageData) {
var options = {
method : 'POST',
endpoint : 'assets/' + asset.uuid + '/data',
data : imageData // <-- read in from a file using FileReader.readAsBinaryString()
}

console.log('preparing to upload image data');
console.log(options);
var self = this;
this.client.request(options, function(error, response) {
self.uploadingImageData(error, response);
});
}

这是我得到的回复:

Error (500)(web_application): undefined apigee.js:2975
Object {error: "web_application", timestamp: 1387435347814, duration: 0, exception: "javax.ws.rs.WebApplicationException"} apigee.js:2975

我真的可以帮助找出正在发生的事情。

1 个答案:

答案 0 :(得分:2)

2014年及以后的更新:

截至2014年,Usergrid / Apigee BaaS资产机制已经大大简化。您现在可以在一次通话中将二进制资产上传到任何实体。例如:

curl -X POST -i -F name='clouds' -F file=@happy_clouds.jpg 'https://api.usergrid.com/your-org/your-app/pictures/'

文档:http://apigee.com/docs/api-baas/content/assets


传统资产上传(此处为历史参考):

我将为您提供所需的API POST数据以完成此操作;希望你可以翻译这个,以便用一点点努力解决你的JavaScript问题。另外,请确保您使用的是最新版本的SDK。

首先,您必须创建资产占位符:

POST "https://api.usergrid.com/{org}/{app}/assets" 

{
    "name": "MyPicture.jpg",
    "owner": "{uuid_of_user_to_own}", 
    "path":"assets/{something_unique-will_throw_error_if_not}", 
    "content-type":"image/jpeg"
}
  • 确保您为此
  • 发送适当的授权标头
  • 确保您从uuid
  • 的回复中捕获entities[0].uuid

接下来,您需要实际上传二进制数据:

POST "https://api.usergrid.com/{org}/{app}/assets/{uuid_from_first_response}/data"

有效负载: [MyPicture.jpg] as binary data/file

  • 确保您为此
  • 发送适当的授权标头
  • 确保将标题Content-Type设置为application/octet-stream

相当于:

curl -X POST \
-i "https://api.usergrid.com/{org}/{app}/assets/{uuid_from_first_response}/data" \
--data-binary "@MyPicture.jpg" \
-H "Content-Type: application/octet-stream" \
-H "Authorization: Bearer {access_token}"

如果您的请求成功(这在很大程度上取决于您是否发布了正确的二进制数据流!),您应该可以通过以下方式访问它:

GET "https://api.usergrid.com/{org}/{app}/assets/{uuid_from_first_response}/data"

要进行问题排查,请使用上面指出的或使用POSTMAN之类的工具,它允许您在GUI中设置标题,选择要上传的图像文件,然后运行整个过程从头到尾。

祝你好运!