全部產品
Search
文件中心

Object Storage Service:Android追加上傳

更新時間:Feb 28, 2024

追加上傳是指通過AppendObject方法在已上傳的追加類型檔案(Appendable Object)末尾直接追加內容。

說明

通過AppendObject操作上傳的Object類型為Appendable Object,而通過PutObject操作上傳的Object類型為Normal Object。

注意事項

當使用Append方式上傳Object時,請注意對追加位置(Position)參數進行正確的設定。

  • 當建立一個Appendable Object時,請設定追加位置為0。

  • 當對Appendable Object進行內容追加時,請設定追加位置為Object當前長度。

    您可以通過追加上傳後的返回內容或者通過HeadObject操作擷取Object長度。

範例程式碼

以下代碼用於追加上傳檔案。

// 依次填寫Bucket名稱(例如examplebucket)、Object完整路徑(例如exampledir/exampleobject.txt)和本地檔案完整路徑(例如/storage/emulated/0/oss/examplefile.txt)。
// Object完整路徑中不能包含Bucket名稱。
AppendObjectRequest append = new AppendObjectRequest("examplebucket", "exampledir/exampleobject.txt", "/storage/emulated/0/oss/examplefile.txt");

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain");
append.setMetadata(metadata);

// 設定追加位置。
append.setPosition(0);

// 設定回調。
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @Override
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});
// 非同步追加上傳。
OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
    @Override
    public void onSuccess(AppendObjectRequest request, AppendObjectResult result) {
        Log.d("AppendObject", "AppendSuccess");
        Log.d("NextPosition", "" + result.getNextPosition());
    }

    @Override
    public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // 異常處理。
    }
});

對於Android10及之後版本的分區儲存,您可以使用檔案的Uri上傳檔案到OSS。

// 依次填寫Bucket名稱(例如examplebucket)和Object完整路徑(例如exampledir/exampleobject.txt)。
// Object完整路徑中不能包含Bucket名稱。
AppendObjectRequest append = new AppendObjectRequest("examplebucket", "exampledir/exampleobject.txt", fileUri);

ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("text/plain");
append.setMetadata(metadata);

// 設定追加位置。
append.setPosition(0);

// 設定回調。
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @Override
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});
// 非同步追加上傳。
OSSAsyncTask task = oss.asyncAppendObject(append, new OSSCompletedCallback<AppendObjectRequest, AppendObjectResult>() {
    @Override
    public void onSuccess(AppendObjectRequest request, AppendObjectResult result) {
        Log.d("AppendObject", "AppendSuccess");
        Log.d("NextPosition", "" + result.getNextPosition());
    }

    @Override
    public void onFailure(AppendObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // 異常處理。
    }
});

相關文檔