图片上传成功了还会去调用一次SaveCallback接口的onFailure方法,我也是醉了
String contenttype = getContentType(getFileExt(srcFilePath));
OSSBucket sampleBucket = new OSSBucket(bucket);
OSSFile ossFile = new OSSFile(sampleBucket,key);
ossFile.setUploadFilePath(srcFilePath,contenttype);
ossFile.enableUploadCheckMd5sum();
TaskHandler tkh = ossFile.uploadInBackground(new SaveCallback() {
@Override
public void onSuccess(String s) {
Log.d(TAG,s+"上传成功");
uploadFileCallback.onSuccess(s);
}
@Override
public void onProgress(String s, int i, int i2) {
Log.d(TAG,s+"正在上传中");
uploadFileCallback.onProgress(s,i,i2);
}
@Override
public void onFailure(String s, OSSException e) {
Log.d(TAG,s+"上传失败");
uploadFileCallback.onFailure(s,e);
}
});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到图片上传成功后仍然调用onFailure
方法的情况,可能是由几个原因导致的:
网络波动或超时:即使文件已经上传到OSS,但在回调确认过程中网络出现波动或超时,可能导致客户端认为上传失败。
MD5校验问题:您启用了ossFile.enableUploadCheckMd5sum();
进行MD5校验。如果上传的文件与本地计算的MD5不一致(可能因为读取文件、网络传输中的错误),会触发onFailure
。
OSS配置问题:Bucket的权限设置、存储类型等配置不当也可能导致上传后处理逻辑出现问题。
回调URL或通知问题:如果设置了上传完成后的回调通知,但回调服务端存在问题,可能会间接影响客户端逻辑判断。
为了解决这个问题,您可以尝试以下几个步骤:
检查网络环境:确保上传期间网络稳定,没有频繁断开重连的情况。
禁用MD5校验:临时注释掉ossFile.enableUploadCheckMd5sum();
,看是否还会触发onFailure
,以排除MD5校验带来的影响。如果问题消失,则需要检查文件读取和上传过程中的MD5计算是否有误。
查看日志和错误码:详细查看onFailure
中返回的错误信息和异常(e),阿里云OSS SDK的异常通常会携带具体的错误码和描述,这有助于定位问题。
检查Bucket配置:登录阿里云OSS控制台,检查目标Bucket的读写权限、CORS配置、生命周期规则等是否正确设置。
回调验证:如果使用了回调功能,确保回调地址是可达的,并且回调服务端逻辑正确无误。
更新SDK版本:确保使用的阿里云OSS SDK是最新的,旧版本可能存在已知问题。
如果以上步骤都无法解决问题,建议直接联系阿里云技术支持获取更专业的帮助。