我知道这是一个测试版功能,但我无处可去。我可以创建资产,但是当我尝试上传数据时,我没有得到任何有用的东西。这就是我正在做的(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
我真的可以帮助找出正在发生的事情。
答案 0 :(得分:2)
截至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相当于:
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"
要进行问题排查,请使用上面指出的curl或使用POSTMAN之类的工具,它允许您在GUI中设置标题,选择要上传的图像文件,然后运行整个过程从头到尾。
祝你好运!