OSS物件儲存的檔案追加上傳問題及解決方案

JAVA小白的成長之路發表於2020-10-10

最近專案中碰到這樣一個問題,在我們軟體的版本更新中的更新日誌,需要每次更新的內容對同一個檔案進行追加。然後我看了下阿里雲的文件是這樣寫的,地址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();
        }

搞定!!!

相關文章