0

我知道这是一个测试版功能,但我无处可去。我可以创建资产,但是当我尝试上传数据时,我没有得到任何有用的东西。这就是我正在做的事情(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

我真的可以使用某人的帮助来弄清楚发生了什么。

4

1 回答 1

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-Typeapplication/octet-stream

与此等效的curl

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 中设置标题,选择要上传的图像文件,并从头到尾运行整个过程。

祝你好运!

于 2013-12-19T17:13:26.517 回答