Updated on 2024-06-21 GMT+08:00

Obtaining Download Progresses

If you have any questions during development, post them on the Issues page of GitHub. For details about parameters and usage of each API, see the .

You can call GetObjectRequest.setProgressInterval to configure the data transmission interface to obtain download progresses. Sample code is as follows:

// Hard-coded or plaintext AK/SK are risky. For security purposes, encrypt your AK/SK and store them in the configuration file or environment variables. In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, configure environment variables ACCESS_KEY_ID and SECRET_ACCESS_KEY_ID.
// Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/eu/usermanual-ca/ca_01_0003.html.
String ak = System.getenv("ACCESS_KEY_ID");
String sk = System.getenv("SECRET_ACCESS_KEY_ID");
String endPoint = "https://your-endpoint";
// Create an instance of ObsClient.
final ObsClient obsClient = new ObsClient(ak, sk, endPoint);

GetObjectRequest request = new GetObjectRequest("bucketname", "objectname");
request.setProgressListener(new ProgressListener() {
       
       @Override
       public void progressChanged(ProgressStatus status) {
              // Obtain the average download rate.
              Log.i("GetObject", "AverageSpeed:" + status.getAverageSpeed());
              // Obtain the download progress in percentage.
              Log.i("GetObject", "TransferPercentage:" + status.getTransferPercentage());
       }
});
// Refresh the upload progress each time 1 MB data is uploaded.
request.setProgressInterval(1024 * 1024L);
ObsObject obsObject = obsClient.getObject(request);

// Obtain the object content.
System.out.println("Object content:");
InputStream input = obsObject.getObjectContent();
byte[] b = new byte[1024];
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
int len;
while ((len=input.read(b)) != -1){
       bos.write(b, 0, len);
}
 
System.out.println(new String(bos.toByteArray()));
bos.close();
input.close();

You can obtain the download progress when downloading an object in streaming, partial, or resumable mode.