首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android API上使用baasbox保存文档

在android API上使用baasbox保存文档
EN

Stack Overflow用户
提问于 2016-08-17 06:04:47
回答 1查看 57关注 0票数 0

我有以下令人讨厌的堆栈跟踪

代码语言:javascript
复制
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: class com.baasbox.android.BaasClientException :{"result":"error","message":"The body payload cannot be empty. Hint: put in the request header Content-Type: application/json","resource":"/document/Images","method":"POST","request_header":{"X-BAASBOX-APPCODE":["1234567890"],"Connection":["Keep-Alive"],"Content-Length":["316039"],"X-BB-SESSION":["187be9f8-dc77-436d-89de-65dd3cf0e2ba"],"Content-Type":["application/json;charset=UTF-8"],"Accept-Encoding":["gzip"],"User-Agent":["BaasBox AndroidSDK/0.9.2"],"Host":["192.168.192.59:9000"]},"API_version":"0.9.5"}
at com.baasbox.android.NetworkTask.onClientError(NetworkTask.java:98)
at com.baasbox.android.NetworkTask.parseResponse(NetworkTask.java:63)
at com.baasbox.android.NetworkTask.asyncCall(NetworkTask.java:151)
at com.baasbox.android.impl.Task.execute(Task.java:189)
at com.baasbox.android.impl.Dispatcher$Worker.run(Dispatcher.java:170)

当我尝试将图片保存到以前在本地baasbox安装上创建的集合中时,会发生这种情况,以下是导致问题的代码,不确定实际问题是什么……您可能带来的任何帮助都将受到高度的感谢。

代码语言:javascript
复制
Bitmap bitmap = MediaStore.Images.Media.getBitmap( this.getContentResolver(), selectedImage);
ImageView imageView = (ImageView)findViewById(R.id.shareImageView);
imageView.setImageBitmap(bitmap);

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

BaasDocument doc = new BaasDocument("Images");
doc.put("title","Image");
doc.put("body", byteArray);
doc.save(new BaasHandler<BaasDocument>() {
    @Override
    public void handle(BaasResult<BaasDocument> res) {
        if(res.isSuccess()) {
            Log.d("LOG","Saved: "+res.value());
        } else {
            Log.d("LOG","No Saved: "+res.value());
        }
    }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-17 07:37:36

这段代码解决了这个问题,而不是将图像视为文档,我应该从一开始就使用文件,任何关于何时使用文件和何时使用文档的注释都非常受欢迎。

代码语言:javascript
复制
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();

JsonObject attachedData = new JsonObject();
attachedData.put("username", BaasUser.current().getName());

BaasFile file = new BaasFile(attachedData);

//BaasACL acl = new BaasACL().grantUsers(Grant.READ,"all");

//file.upload(acl, byteArray,new BaasHandler<BaasFile> () {
file.upload(byteArray,new BaasHandler<BaasFile> () {
    @Override
    public void handle(BaasResult<BaasFile> res) {
        if( res.isSuccess() ) {
            Log.d("LOG","File uploaded with permissions");
        } else {
            Log.e("LOG","Deal with error",res.error());
        }
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38985218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档