jlcool / aliossflutter

阿里云oss flutter
Apache License 2.0
76 stars 47 forks source link

安卓报错 #7

Closed linguitang closed 5 years ago

linguitang commented 5 years ago

AliossflutterPlugin 中 String jsonText = IOUtils.readStreamAsString(input, OSSConstants.DEFAULT_CHARSET_NAME); 我得到的结果是

{
    "StatusCode": 200,
    "AccessKeyId": "STS.NJ3KZnNKJasGNm4GHm4LfbqEo",
    "AccessKeySecret": "686HQPMGA3pwDgkAGtJhRkae2KiS8yfBzwDYdkbKeUvS",
    "SecurityToken": "CAISjQJ1q6Ft5B2yfSjIr4mGAODao5Rr1rGsTEuFo0g4OMNKjbTujTz2IHlMfHRrCOgbvv0/nGpR6foZlqp6U4cdhqk3qQE1vPpt6gqET9fria7ctM456vCMHWyUFGSMvqv7aPn4S9XwY+qkb0u++AZ43br9c0fNPTGiKobby+QkDLItUxK/cCBNCfpPOwJms7V6D3bKMuu3OROY5Qi1BUFz6A1nkjE9u+btgO/ks0aC0gGmkLVP/tqufsX+MfMBZskvD42Hu8VtbbfE3SJq7BxHybx7lqQs+02c54nFXgIAu0jWarqMqIQwcFRjFaE+Gr9Zqv/njuF/ueHVmInxxgxEIeZPSSPbSZBWaB068XoJXBqAAQ3MB/zSkl5fKriO5kj2OFMI5+STc8c5M2lCDYbktHcES90iSwTMORi7MBPbxY8axVHc7nzuHDQ5RAkBin/y9A/kKhCtfoPQylceceGMatFAq26mJRbz/vGh1nCnRP9nYP+im4dLy41KEVH/rmgAJ2yFzSSvdmA9pId+lM7Pnv0c",
    "Expiration": "2019-04-16T09:42:30Z"
}

之后两行要执行 String dec = jsonObj.getString("Data"); 但是其实我的这个jsonObj并没有Data这个字段,这时候会报错

W/System.err(25626): org.json.JSONException: No value for Data
W/System.err(25626):    at org.json.JSONObject.get(JSONObject.java:389)
W/System.err(25626):    at org.json.JSONObject.getString(JSONObject.java:550)
jlcool commented 5 years ago

alioss.init("sts url", "http://oss-cn-hangzhou.aliyuncs.com"); 不要写cryptkey

linguitang commented 5 years ago

alioss.init("sts url", "http://oss-cn-hangzhou.aliyuncs.com"); 不要写cryptkey

我没有写 alioss.init(_Config.stsserver,_Config.endpoint);

代码

                    JSONObject jsonObj = new JSONObject(jsonText);
                    String dec = jsonObj.getString("Data");
                    if ("aes".equals(crypt_type)) {
                        jsonText = AESCipher.aesDecryptString(dec,crypt_key);
                    }else{
                        SecretUtils.PASSWORD_CRYPT_KEY = crypt_key;
                        jsonText = new String(SecretUtils.decryptMode(dec));
                    }

这个不管有没有写那个字段都会执行getString

jlcool commented 5 years ago

恩 忘了写判断了

linguitang commented 5 years ago

什么时候方便更新一下呢? 有时间的话你还可以把这个插件提交到https://pub.dartlang.org/,aliyun官方都有推荐用你这个插件 @jlcool

jlcool commented 5 years ago

好的,但是没这么快

linguitang commented 5 years ago

预计什么时候github更新呢

jlcool commented 5 years ago

好了

linguitang commented 5 years ago

可否增加一个doesObjectExist用于判断文件是否已经存在,这样可以避免重复上传一样的文件,官方sdk有此方法https://help.aliyun.com/document_detail/94012.html?spm=a2c4g.11174283.6.965.70907da2cPgCHX

linguitang commented 5 years ago

再请教一下,并发的情况下alioss.responseFromProgress中如何区分不同的上传对象,还是说一次上传就新建一次alioss

jlcool commented 5 years ago

其他功能抽时间做,并发通过返回值里的key判断,alioss.responseFromProgress在listen的时候返回StreamSubscription,在退出页面的时候cancel掉

jlcool commented 5 years ago

它好像没有返回key,等之后加吧

jlcool commented 5 years ago

争取今天内弄完

jlcool commented 5 years ago

好了

linguitang commented 5 years ago

@jlcool https://pub.dartlang.org/还是旧版本