Obtaining the Upload Progress (SDK for Java)
Function
This API returns the upload progress of a specified object.
You can call PutObjectRequest.setProgressListener to obtain the upload progress.
If you have any questions during development, post them on the Issues page of GitHub.
Restrictions
- To obtain the upload progress, you must have the obs:object:PutObject permission. For details about permission granting, see Typical Permission Control Scenarios.
- 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 configure the Content-Length parameter.
Method
PutObjectRequest.setProgressListener(ProgressListener progressListener)
Request parameters
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
progressListener |
Yes |
Explanation: Data transmission listener for obtaining the upload progress. For details, see Table 2. |
Method |
Return Value Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
void |
Yes |
Explanation: Used for obtaining the upload progress. For details, see Table 3. |
Parameter |
Type |
Mandatory (Yes/No) |
Description |
---|---|---|---|
status |
Yes |
Explanation: Progress data. For details, see Table 4. |
Method |
Return Value Type |
Description |
---|---|---|
getAverageSpeed() |
double |
Average transmission rate. |
getInstantaneousSpeed() |
double |
Instantaneous transmission rate. |
getTransferPercentage() |
int |
Transmission progress, in percentage. |
getNewlyTransferredBytes() |
long |
Number of the newly transmitted bytes. |
getTransferredBytes() |
long |
Number of bytes that have been transmitted. |
getTotalBytes() |
long |
Number of the bytes to be transmitted. |
Code Examples
This example returns the progress of uploading local file exampleLocalFilePath to bucket examplebucket as object objectname.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
import com.obs.services.ObsClient; import com.obs.services.exception.ObsException; import com.obs.services.model.ProgressListener; import com.obs.services.model.ProgressStatus; import com.obs.services.model.PutObjectRequest; import java.io.File; public class PutObject005 { public static void main(String[] args) { // Obtain an AK/SK pair using environment variables or import the AK/SK pair in other ways. Using hard coding may result in leakage. // Obtain an AK/SK pair on the management console. String ak = System.getenv("ACCESS_KEY_ID"); String sk = System.getenv("SECRET_ACCESS_KEY_ID"); // (Optional) If you are using a temporary AK/SK pair and a security token to access OBS, you are advised not to use hard coding, which may result in information leakage. // Obtain an AK/SK pair and a security token using environment variables or import them in other ways. // String securityToken = System.getenv("SECURITY_TOKEN"); // Enter the endpoint corresponding to the bucket. EU-Dublin is used here as an example. Replace it with the one in your actual situation. String endPoint = "https://obs.eu-west-101.myhuaweicloud.eu"; // Obtain an endpoint using environment variables or import it in other ways. //String endPoint = System.getenv("ENDPOINT"); // Create an ObsClient instance. // Use the permanent AK/SK pair to initialize the client. ObsClient obsClient = new ObsClient(ak, sk,endPoint); // Use the temporary AK/SK pair and security token to initialize the client. // ObsClient obsClient = new ObsClient(ak, sk, securityToken, endPoint); try { // Upload a file. PutObjectRequest request = new PutObjectRequest("examplebucket", "exampleobject"); request.setFile(new File("exampleLocalFilePath")); request.setProgressListener( new ProgressListener() { @Override public void progressChanged(ProgressStatus status) { // Obtain the average upload rate. System.out.println("AverageSpeed:" + status.getAverageSpeed()); // Obtain the upload progress in percentage. System.out.println("TransferPercentage:" + status.getTransferPercentage()); } }); // Refresh the upload progress each time 1 MB data is uploaded. request.setProgressInterval(1024 * 1024L); obsClient.putObject(request); System.out.println("putObject successfully"); } catch (ObsException e) { System.out.println("putObject failed"); // Request failed. Print the HTTP status code. System.out.println("HTTP Code:" + e.getResponseCode()); // Request failed. Print the server-side error code. System.out.println("Error Code:" + e.getErrorCode()); // Request failed. Print the error details. System.out.println("Error Message:" + e.getErrorMessage()); // Request failed. Print the request ID. System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); e.printStackTrace(); } catch (Exception e) { System.out.println("putObject failed"); // Print other error information. e.printStackTrace(); } } } |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.