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

Obtaining Upload 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 PutObjectRequest.setProgressListener to configure the data transmission interface to obtain upload 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.
ObsClient obsClient = new ObsClient(ak, sk, endPoint);

PutObjectRequest request = new PutObjectRequest("bucketname", "objectname");
request.setFile(new File("localfile")); // localfile indicates the path of the local file to be uploaded. You need to specify the file name.
request.setProgressListener(new ProgressListener() {
       
       @Override
       public void progressChanged(ProgressStatus status) {
              // Obtain the average upload rate.
              Log.i("PutObject", "AverageSpeed:" + status.getAverageSpeed());
              // Obtain the upload progress in percentage.
              Log.i("PutObject", "TransferPercentage:" + status.getTransferPercentage());
       }
});
// Refresh the upload progress each time 1 MB data is uploaded.
request.setProgressInterval(1024 * 1024L);
obsClient.putObject(request);
  • You can query the upload progress when uploading an object in streaming, file-based, multipart, appendable, or resumable mode.
  • If the value of ProgressStatus.getTransferPercentage() is -1, the content is uploaded in streaming mode. In this case, you must set the object length (Content-Length) in the object attribute.