Tous les produits
Search
Centre de documentation

Object Storage Service:Append upload (Android SDK)

Dernière mise à jour :Aug 18, 2026

Appelez l'opération AppendObject pour ajouter du contenu à des objets ajoutables existants.

Remarque

Les objets téléchargés via l'opération AppendObject sont des objets ajoutables. Ceux téléchargés via l'opération PutObject sont des objets normaux.

Remarques d'utilisation

  • Avant d'exécuter l'exemple de code de cette rubrique, créez une instance OSSClient en utilisant un nom de domaine personnalisé ou le Security Token Service (STS). Pour plus d'informations, consultez Initialisation (SDK Android).

Lors du téléchargement d'un objet par ajout de données, définissez correctement le paramètre position.

  • Lors de la création d'un objet ajoutable, définissez le paramètre position sur 0.

  • Lors de l'ajout de contenu à un objet ajoutable, définissez le paramètre position sur la longueur actuelle de l'objet.

    Vous pouvez obtenir la longueur de l'objet depuis la réponse du précédent téléchargement par ajout ou via l'opération HeadObject.

Permissions

Par défaut, un compte Alibaba Cloud dispose de toutes les autorisations. Les utilisateurs RAM ou les rôles RAM associés à un compte Alibaba Cloud ne disposent d'aucune autorisation par défaut. Le compte Alibaba Cloud ou l'administrateur du compte doit accorder les autorisations nécessaires via des politiques RAM ou une Bucket Policy.

API

Action

Description

AppendObject

oss:PutObject

Cette opération permet de télécharger un objet en l'ajoutant à un objet existant.

oss:PutObjectTagging

Lors du téléchargement d'un objet par ajout à un objet existant, cette autorisation est requise si vous spécifiez des tags d'objet via x-oss-tagging.

Exemples de code

Le code suivant montre comment ajouter des données à un objet.

// Specify the bucket name, the full path of the object, and the full path of the local file. Example: examplebucket, exampledir/exampleobject.txt, and /storage/emulated/0/oss/examplefile.txt.
// The full path of the object cannot contain the bucket name.
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);

// Set the append position.
append.setPosition(0);

// Set the callback.
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @Override
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});
// Asynchronously append data.
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) {
        // Handle exceptions.
    }
});

Pour le stockage étendu dans Android 10 et versions ultérieures, vous pouvez utiliser l'URI d'un fichier pour le télécharger vers OSS.

// Specify the bucket name and the full path of the object. Example: examplebucket and exampledir/exampleobject.txt.
// The full path of the object cannot contain the bucket name.
AppendObjectRequest append = new AppendObjectRequest("examplebucket", "exampledir/exampleobject.txt", fileUri);

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

// Set the append position.
append.setPosition(0);

// Set the callback.
append.setProgressCallback(new OSSProgressCallback<AppendObjectRequest>() {
    @Override
    public void onProgress(AppendObjectRequest request, long currentSize, long totalSize) {
        Log.d("AppendObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});
// Asynchronously append data.
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) {
        // Handle exceptions.
    }
});

Références