Appelez l'opération AppendObject pour ajouter du contenu à des objets ajoutables existants.
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 |
|
Cette opération permet de télécharger un objet en l'ajoutant à un objet existant. |
|
|
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
Pour obtenir le code d'exemple complet pour les téléchargements par ajout, consultez l'exemple GitHub.
Pour plus d'informations sur l'opération API pour les téléchargements par ajout, consultez AppendObject.
Pour savoir comment initialiser un OSSClient, consultez Initialiser une instance OSSClient pour Android.