Obtaining the Download Progress (SDK for Node.js)
If you have any questions during development, post them on the Issues page of GitHub.
Function
This API is used to monitor and obtain the download progress of an object in real time. By calling the progress listening API, you can obtain the status information such as the start of the download task, data transfer in progress, download completion, and download failure, as well as the number of downloaded bytes and total number of bytes.
Restrictions
- To download an object, you must be the bucket owner or have the required permission (obs:object:GetObject in IAM or GetObject in a bucket policy). For details, see Introduction to OBS Access Control, IAM Custom Policies, and Configuring an Object Policy.
- To learn about the mappings between OBS regions and endpoints, see Regions and Endpoints.
- Objects in the Archive storage class can be downloaded only when they are in the Restored status.
- Currently, this function is only supported by the resumable download API.
Method
fun ProgressCallback(transferredAmount, totalAmount, totalSeconds)
Request Parameters
| Parameter | Type | Description |
|---|---|---|
| transferredAmount | int | Explanation: Number of bytes that have been transmitted |
| totalAmount | int | Explanation: Total number of bytes to be transmitted |
| totalSeconds | int | Explanation: Time consumed for transmission, in seconds |
Responses
This progress callback function returns no value.
Sample Code - Resumable Download
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 64 | // Import the OBS library. // Use npm to install the client. const ObsClient = require("esdk-obs-nodejs"); // Use the source code to install the client. // var ObsClient = require('./lib/obs'); // Create an ObsClient instance. const obsClient = new ObsClient({ // Obtain an AK and SK pair using environment variables (recommended) or import it in other ways. Using hard coding may result in leakage. // Obtain an AK/SK pair on the management console. For details, see https://support.huaweicloud.com/intl/en-us/usermanual-ca/ca_01_0003.html. access_key_id: process.env.ACCESS_KEY_ID, secret_access_key: process.env.SECRET_ACCESS_KEY, // (Optional) If you use a temporary AK/SK pair and a security token to access OBS, you are not advised to use hard coding, which may result in information leakage. You can obtain an AK/SK pair using environment variables or import an AK/SK pair in other ways. // security_token: process.env.SECURITY_TOKEN, // Enter the endpoint corresponding to the bucket. CN-Hong Kong is used here as an example. Replace it with the one currently in use. server: "https://obs.ap-southeast-1.myhuaweicloud.com" }); async function downloadFile() { try { const params = { // Specify the bucket name. Bucket: 'examplebucket', // Specify an object. example/objectname is used in this example. Key: 'example/objectname', // Specify a local absolute path (/tmp/objectname in this example) for download. If the path is left blank, the current working directory is used by default. DownloadFile: 'localfile', // Specify whether to enable resumable transmission. The value true is used in this example. The default value is false. EnableCheckpoint: true, // Specify a part size, in bytes. This example sets each part to 9 MB. PartSize: 9 * 1024 * 1024, // Specify the maximum number of parts that can be concurrently transmitted. 5 is used in this example. TaskNum: 5, // Progress callback ProgressCallback: function(transferredAmount, totalAmount, totalSeconds){ // Obtain the average download rate (KB/s). console.log(transferredAmount * 1.0 / totalSeconds / 1024); // Obtain the download progress in percentage. console.log(transferredAmount * 100.0 / totalAmount); }; }; // Download the object using resumable download. const result = await obsClient.downloadFile(params); if (result.CommonMsg.Status <= 300) { console.log("Download file(%s) under the bucket(%s) successful!", params.Key, params.Bucket); console.log("RequestId: %s", result.CommonMsg.RequestId); console.log("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s", result.InterfaceResult.StorageClass, result.InterfaceResult.ETag, result.InterfaceResult.ContentType, result.InterfaceResult.ContentLength, result.InterfaceResult.LastModified, ); return; }; console.log("An ObsError was found, which means your request sent to OBS was rejected with an error response."); console.log("Status: %d", result.CommonMsg.Status); console.log("Code: %s", result.CommonMsg.Code); console.log("Message: %s", result.CommonMsg.Message); console.log("RequestId: %s", result.CommonMsg.RequestId); } catch (error) { console.log("An Exception was found, which means the client encountered an internal problem when attempting to communicate with OBS, for example, the client was unable to access the network."); console.log(error); }; }; downloadFile(); |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot