OSS对象存储的文件追加上传问题及解决方案

最近项目中碰到这样一个问题,在我们软件的版本更新中的更新日志,需要每次更新的内容对同一个文件进行追加。然后我看了下阿里云的文档是这样写的,地址https://help.aliyun.com/document_detail/84784.html?spm=a2c4g.11186623.4.2.23fc2201CSZFks
在这里插入图片描述
详情大家可以去上面链接查看。
接下来讲讲问题:当你这个文件是空的,也就是说你这个文件OKB时,执行这个没有任何问题,可以追加上去,因为文件长度确实是0.
在这里插入图片描述

当你第二次再追加是,你会发现,它会给你抛异常,意思是说文件长度和文件位置不相等
在这里插入图片描述
怎么解决呢?
我也琢磨了半天,查文档,发现并没有。因为官方例子中很明确告诉我们第二次之后的追加需要提供Position长度,问题是怎么拿到这个文件长度呢?
在这里插入图片描述
终于,在官方jar中找到提供了一个OSSObject 这个实体类,里面存放着文件内容流
在这里插入图片描述
以下便是
在这里插入图片描述

OSSObject ossObject = ossClient.getObject("bucketName", "key");
        InputStream inputStream = ossObject.getObjectContent();
        int ww;
        try {
            ww = inputStream.available();
            appendObjectRequest.setInputStream(new ByteArrayInputStream(content1.getBytes()));
            appendObjectRequest.setPosition((long)ww);
            AppendObjectResult appendObjectResult = ossClient.appendObject(appendObjectRequest);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

搞定!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值