Help Center/ OBS BrowserJS SDK/ API Reference/ Other APIs/ Upload File (Resumable Upload)
Updated on 2023-01-04 GMT+08:00

Upload File (Resumable Upload)

API Description

This API is an encapsulated and enhanced version of multipart upload, and supports upload progress reporting, upload event reporting, task pause, and resumable upload.

Method Definition

ObsClient.uploadFile

Request Parameter

Field

Type

Optional or Mandatory

Description

Bucket

String

If UploadCheckpoint is not set, this parameter is mandatory.

Bucket name

Key

String

If UploadCheckpoint is not set, this parameter is mandatory.

Object name

RequestDate

String

or

Date

Optional

Request time

NOTE:

When the parameter type is String, the value must comply with the ISO8601 or RFC822 standards.

SourceFile

File

or

Blob

If UploadCheckpoint is not set, this parameter is mandatory.

Source file to be uploaded (The browser must support FileReader.)

UploadCheckpoint

Object

Optional

Resumable upload recording object, which can be obtained by running the ResumeCallback command.

PartSize

Number

Optional

Part size, in bytes. The value ranges from 100 KB to 5 GB and defaults to 9 MB.

TaskNum

Number

Optional

Maximum number of parts that can be concurrently uploaded. The default value is 1.

ProgressCallback

Function

Optional

Callback function for obtaining the upload progress

NOTE:

This callback function contains the following parameters in sequence: Number of uploaded bytes, total bytes, and used time (unit: second).

EventCallback

Function

Optional

Callback function for obtaining the upload event

NOTE:
  • The callback function contains the following parameters: event type, event parameter, and event result.
  • Possible values of the event type are as follows: uploadPartSucceed, uploadPartFailed, uploadPartAborted, initiateMultipartUploadSucceed, initiateMultipartUploadFailed, completeMultipartUploadSucceed, completeMultipartUploadFailed, completeMultipartUploadAborted

ResumeCallback

Function

Optional

Callback function for obtaining the resumable upload control parameters.

NOTE:
  • The callback function contains the following parameters: the control parameter for canceling the resumable upload task and the resumable upload record object.
  • You can invoke the cancel method of the control parameter for canceling the resumable upload task to suspend a resumable upload task.
  • The sourceFile field in the resumable upload record object indicates the file to be uploaded. This field needs to be set again after the browser is restarted.

ACL

String

Optional

Pre-defined access control policy specified during object creation

StorageClass

String

Optional

Storage class, which can be specified during the object creation

Metadata

Object

Optional

Customized metadata of the object

WebsiteRedirectLocation

String

Optional

Location where the object is redirected to, when the bucket is configured with website hosting.

Expires

Number

Optional

Expiration time of the object, in days

ContentType

String

Optional

MIME type of the object

SseKms

String

Optional

Algorithm used in SSE-KMS encryption. The valid value is kms.

SseKmsKey

String

Optional

Master key used in SSE-KMS encryption. The value can be null.

SseC

String

Optional

Algorithm used in SSE-C encryption. The value can be AES256.

SseCKey

String

Optional

Key used in SSE-C encryption. It is calculated by using AES-256.

Returned Result (InterfaceResult)

Field

Type

Description

RequestId

String

Request ID returned by the OBS server

ETag

String

ETag calculated based on the ETags of all combined parts

Bucket

String

Bucket in which parts are combined

Key

String

Object name obtained after part combination

Location

String

URL of the object generated after part combination

VersionId

String

Version ID of the object obtained after part combination

Sample Code

var cp;
var hook;
obsClient.uploadFile({
       Bucket : 'bucketname',
       Key : 'objectkey',
       SourceFile : document.getElementById('input-file').files[0],
       PartSize : 9 * 1024 * 1024,
       ProgressCallback : function(transferredAmount, totalAmount, totalSeconds){
           console.log(transferredAmount * 1.0 / totalSeconds / 1024);
           console.log(transferredAmount * 100.0 / totalAmount);
       },
       ResumeCallback : function(resumeHook, uploadCheckpoint){
           hook = resumeHook;
           cp = uploadCheckpoint;
       }
}, function(err, result){
    if(err){
        console.error('Error-->' + err);
    }else{
          if(result.CommonMsg.Status < 300){
                 console.log('RequestId-->' + result.InterfaceResult.RequestId);
                 console.log('Bucket-->' + result.InterfaceResult.Bucket);
                 console.log('Key-->' + result.InterfaceResult.Key);
                 console.log('Location-->' + result.InterfaceResult.Location);
          }else{
                 console.log('Code-->' + result.CommonMsg.Code);
                 console.log('Message-->' + result.CommonMsg.Message);
          }
    }
});