En este tema se describe cómo eliminar un solo objeto o varios objetos al mismo tiempo.
Los objetos eliminados no se pueden restaurar. Tenga precaución al eliminar objetos.
Notas de uso
Para eliminar un objeto, debe contar con permisos de escritura en el bucket donde se almacena dicho objeto.
Antes de ejecutar el código de ejemplo de este tema, cree una instancia de OSSClient mediante métodos como el uso de un nombre de dominio personalizado o Security Token Service (STS). Para obtener más información, consulte Initialization (Android SDK).
Eliminar un solo objeto
A continuación se muestra un ejemplo de código para eliminar un objeto llamado exampleobject.txt de un bucket denominado examplebucket:
// Create a delete request.
// Specify the bucket name (for example, examplebucket) and the full path of the object (for example, exampledir/exampleobject.txt). The full path of the object cannot contain the bucket name.
DeleteObjectRequest delete = new DeleteObjectRequest("examplebucket", "exampledir/exampleobject.txt");
// Delete the object asynchronously.
OSSAsyncTask deleteTask = oss.asyncDeleteObject(delete, new OSSCompletedCallback<DeleteObjectRequest, DeleteObjectResult>() {
@Override
public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
Log.d("asyncDeleteObject", "success!");
}
@Override
public void onFailure(DeleteObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// Request error.
if (clientExcepion != null) {
// A client exception occurred, such as a network exception.
clientExcepion.printStackTrace();
}
if (serviceException != null) {
// A server exception occurred.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
Eliminar varios objetos al mismo tiempo
Es posible eliminar hasta 1,000 objetos de forma simultánea.
El resultado de la eliminación se devuelve en dos modos. Seleccione el modo de respuesta según sus necesidades.
verbose (predeterminado): si no se especifica isQuiet o se establece en false, se devuelve una lista con todos los objetos eliminados.
quiet: si isQuiet se establece en true, se devuelve únicamente una lista de los objetos que no se pudieron eliminar.
El siguiente código de ejemplo muestra cómo eliminar varios objetos específicos de un bucket llamado examplebucket y devolver el resultado en el modo quiet:
// Specify the full paths of the objects that you want to delete. The full paths of the objects cannot contain the bucket name.
List<String> objectKeys = new ArrayList<String>();
objectKeys.add("exampleobject.txt");
objectKeys.add("testfolder/sampleobject.txt");
// Set the mode to basic mode to return only the list of files that failed to be deleted.
DeleteMultipleObjectRequest request = new DeleteMultipleObjectRequest("examplebucket", objectKeys, true);
oss.asyncDeleteMultipleObject(request, new OSSCompletedCallback<DeleteMultipleObjectRequest, DeleteMultipleObjectResult>() {
@Override
public void onSuccess(DeleteMultipleObjectRequest request, DeleteMultipleObjectResult result) {
Log.i("DeleteMultipleObject", "success");
}
@Override
public void onFailure(DeleteMultipleObjectRequest request, ClientException clientException, ServiceException serviceException) {
// Request error.
if (clientException != null) {
// A client exception occurred, such as a network exception.
clientException.printStackTrace();
}
if (serviceException != null) {
// A server exception occurred.
Log.e("ErrorCode", serviceException.getErrorCode());
Log.e("RequestId", serviceException.getRequestId());
Log.e("HostId", serviceException.getHostId());
Log.e("RawMessage", serviceException.getRawMessage());
}
}
});
Referencias
-
Eliminación de un solo objeto
Para obtener más información sobre la operación de API que permite eliminar un solo objeto, consulte DeleteObject.
-
Eliminación de varios objetos al mismo tiempo
Para conocer la operación de API que permite eliminar varios objetos de forma simultánea, consulte DeleteMultipleObjects.
Para obtener más información sobre cómo inicializar una instancia de OSSClient, consulte Initialization.