SecretId
and SecretKey
.SecretId
, SecretKey
, and Bucket
, see COS’s Glossary.XCosSecurityToken
field only. For later SDKs, use SecurityToken
instead.var COS = require('./lib/cos-wx-sdk-v5.js')
npm install cos-wx-sdk-v5
var COS = require('cos-wx-sdk-v5');
. For more information, see Support for npm.examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com
ForcePathStyle: true
when instantiating the SDK. In this case, you need to configure the region domain name as the allowed domain name, such as cos.ap-guangzhou.myqcloud.com
.var COS = require('./lib/cos-wx-sdk-v5.js')
var cos = new COS({// ForcePathStyle: true, // If multiple buckets are used, you can use suffixed requests to reduce the number of allowed domain names to be configured; the region domain name will be used for requests.SimpleUploadMethod: 'putObject', // We strongly recommend you use `putObject` when simply uploading small files during advanced upload and batch upload. The SDK version must be v1.3.0 or later.getAuthorization: function (options, callback) {// It will not be called during initialization and will be entered only when a COS method such as `cos.putObject` is called.// Get a temporary key asynchronously.wx.request({url: 'https://example.com/server/sts.php',data: {bucket: options.Bucket,region: options.Region,},dataType: 'json',success: function (result) {var data = result.data;var credentials = data && data.credentials;if (!data || !credentials) return console.error('credentials invalid');callback({TmpSecretId: credentials.tmpSecretId,TmpSecretKey: credentials.tmpSecretKey,// For SDKs on versions earlier than v1.2.0, use `XCosSecurityToken` instead of `SecurityToken`.SecurityToken: credentials.sessionToken,// We recommend that you use the server time as the signature start time to avoid signature errors caused by time deviations.StartTime: data.startTime, // Timestamp in seconds, such as 1580000000ExpiredTime: data.expiredTime, // Timestamp in seconds, such as 1580000900});}});}});// The COS instance can then be used to call a COS request.// TODO
var cos = new COS({SimpleUploadMethod: 'putObject', // We strongly recommend you use `putObject` when simply uploading small files during advanced upload and batch upload. The SDK version must be v1.3.0 or later.// Required parametergetAuthorization: function (options, callback) {// Server examples for JS and PHP: https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/// For server-side examples for other programming languages, see the COS SDK for STS: https://github.com/tencentyun/qcloud-cos-sts-sdk// For the STS documentation, visit https://www.tencentcloud.com/document/product/436/14048wx.request({url: 'https://example.com/server/sts.php',data: {// The required parameters can be obtained from options.},success: function (result) {var data = result.data;var credentials = data && data.credentials;if (!data || !credentials) return console.error('credentials invalid');callback({TmpSecretId: credentials.tmpSecretId,TmpSecretKey: credentials.tmpSecretKey,// For SDKs on versions earlier than v1.2.0, use `XCosSecurityToken` instead of `SecurityToken`.SecurityToken: credentials.sessionToken,// We recommend that you use the server time as the signature start time to avoid signature errors caused by time deviations.StartTime: data.startTime, // Timestamp in seconds, such as 1580000000ExpiredTime: data.expiredTime, // Timestamp in seconds, such as 1580000900});}});}});
var cos = new COS({SimpleUploadMethod: 'putObject', // We strongly recommend you use `putObject` when simply uploading small files during advanced upload and batch upload. The SDK version must be v1.3.0 or later.// Required parametergetAuthorization: function (options, callback) {// Server example: https://github.com/tencentyun/qcloud-cos-sts-sdk/edit/master/scope.mdwx.request({url: 'https://example.com/server/sts-scope.php',data: JSON.stringify(options.Scope),success: function (result) {var data = result.data;var credentials = data && data.credentials;if (!data || !credentials) return console.error('credentials invalid');callback({TmpSecretId: credentials.tmpSecretId,TmpSecretKey: credentials.tmpSecretKey,// For SDKs on versions earlier than v1.2.0, use `XCosSecurityToken` instead of `SecurityToken`.SecurityToken: credentials.sessionToken,// We recommend that you use the server time as the signature start time to avoid signature errors caused by time deviations.StartTime: data.startTime, // Timestamp in seconds, such as 1580000000ExpiredTime: data.expiredTime, // Timestamp in seconds, such as 1580000900ScopeLimit: true, // Refined permission control needs to be set to true, limiting the key to be reused only for the same request});}});}});
getAuthorization
before each request, and the backend uses a fixed or temporary key to calculate the signature and returns it to the frontend. This method makes it difficult to control permissions for multipart upload and thus is not recommended.var cos = new COS({SimpleUploadMethod: 'putObject', // We strongly recommend you use `putObject` when simply uploading small files during advanced upload and batch upload. The SDK version must be v1.3.0 or later.// Required parametergetAuthorization: function (options, callback) {// The server obtains a signature. For more information, see the COS SDK for the corresponding programming language: https://www.tencentcloud.com/document/product/436/6474?from_cn_redirect=1// Note: there may be a security risk associated with this method. The backend needs to strictly control permissions through method and pathname, such as prohibiting put /wx.request({url: 'https://example.com/server/auth.php',data: JSON.stringify(options.Scope),success: function (result) {var data = result.data;if (!data || !data.authorization) return console.error('authorization invalid');callback({Authorization: data.authorization,// For SDKs on versions earlier than v1.2.0, use `XCosSecurityToken` instead of `SecurityToken`.// SecurityToken: data.sessionToken, // If a temporary key is used, sessionToken needs to be passed to SecurityToken.});}});},});
// Log in to https://console.tencentcloud.com/cam/capi to check and manage the SecretId and SecretKey of your project.var cos = new COS({SecretId: 'SECRETID',SecretKey: 'SECRETKEY',SimpleUploadMethod: 'putObject', // We strongly recommend you use `putObject` when simply uploading small files during advanced upload and batch upload. The SDK version must be v1.3.0 or later.});
Parameter | Description | Type | Required |
SecretId | User SecretId | String | No |
SecretKey | User's SecretKey , which we recommend to be used only for frontend debugging and should not be disclosed | String | No |
FileParallelLimit | Number of concurrent file uploads in the same instance. Default value: 3 | Number | No |
ChunkParallelLimit | Number of concurrent part uploads for the same uploaded file. Default value: 3 | Number | No |
ChunkRetryTimes | Number of retries upon multipart upload failure. Default value: 2 (a request will be made 3 times in total, including the initial one) | Number | No |
ChunkSize | Part size in the multipart upload in bytes. Default value: 1048576 (1 MB) | Number | No |
SliceSize | When files are uploaded in batches using uploadFiles, if the file size is greater than the value of this parameter, multipart upload (sliceUploadFile) is used; otherwise, simple upload (putObject) is used. Default value: 1048576 (1 MB) | Number | No |
CopyChunkParallelLimit | Number of concurrent part uploads for the same multipart copy operation. Default value: 20 | Number | No |
CopyChunkSize | Number of bytes in each part during a multipart copy operation with sliceCopyFile . Default value: 10485760 (10 MB) | Number | No |
CopySliceSize | When a file is copied using sliceCopyFile, if the file size is greater than the value of this parameter, multipart copy (sliceCopyFile) is used; otherwise, simple copy (putObjectCopy) is used. Default value: 10485760 (10 MB) | Number | No |
ProgressInterval | Callback frequency of the upload progress callback method onProgress in milliseconds. Default value: 1000 | Number | No |
Protocol | The protocol used when the request is made. Valid values: https: , http: . By default, http: is used when the current page is determined to be in http: format; otherwise, https: is used | String | No |
ServiceDomain | The request domain name when getService is called, such as service.cos.myqcloud.com | String | No |
Domain | The custom request domain name used to call a bucket or object API. You can use a template, such as "{Bucket}.cos.{Region}.myqcloud.com" which will use the bucket and region passed in the replacement parameters when an API is called. | String | No |
UploadQueueSize | The maximum size of the upload queue. Excess tasks will be cleared if their status is not waiting, checking, or uploading. Default value: 10000 | Number | No |
ForcePathStyle | Forces the use of a suffix when sending requests. The suffixed bucket will be placed in the pathname after the domain name, and the bucket will be added to the signature pathname for calculation. Default value: false | Boolean | No |
UploadCheckContentMd5 | Forces the verification of Content-MD5 for file uploads, which calculates the MD5 checksum of the file request body and places it in the Content-MD5 field of the header. Default value: false | Boolean | No |
getAuthorization | Callback method for getting the signature. If there is no SecretId or SecretKey , this parameter is required. Note: This callback method is passed in during instance initialization, and is only executed to obtain the signature when the instance calls APIs. | Function | No |
UseAccelerate | Whether to enable a global acceleration endpoint. Default value: false . If you set the value to true , you need to enable global acceleration for the bucket. For more information, see Enabling Global Acceleration. | Boolean | No |
SimpleUploadMethod | The name of the method for simply uploading small files during advanced upload and batch upload. Valid values: postObject , putObject . Default value: postObject . This parameter is supported starting from v1.3.0. | String | No |
getAuthorization: function(options, callback) { ... }
Parameter | Description | Type |
options | Required for getting the signature | Object |
- Bucket | Bucket name in the format of BucketName-APPID . The bucket name entered here must be in this format | String |
- Region | String | |
callback | Callback method after the temporary key is obtained | Function |
Attribute | Description | Type | Required |
TmpSecretId | tmpSecretId of the obtained temporary key | String | Yes |
TmpSecretKey | tmpSecretKey of the obtained temporary key | String | Yes |
SecurityToken | sessionToken of the obtained temporary key, which corresponds to the x-cos-security-token field in the header. Use XCosSecurityToken instead of SecurityToken for SDKs on versions earlier than v1.2.0. | String | Yes |
StartTime | The timestamp in seconds of when you obtained the key, such as 1580000000 . Passing in this parameter as the signature start time can avoid signature expiration issues due to time deviation on the frontend. | String | No |
ExpiredTime | expiredTime of the obtained temporary key measured in seconds, i.e., the timeout timestamp, such as 1580000900 | String | Yes |
getAuthorization: function(options, callback) { ... }
Parameter | Description | Type |
options | Parameter object for getting the signature | Object |
- Method | Method of the current request | Object |
- Pathname | Request path used for signature calculation | String |
- Key | An object key (object name), the unique identifier of an object in a bucket. For more information, see Object Overview. Note: This parameter is empty if the API that uses the instance is not an object-operation API. | String |
- Query | Query parameter in the current request. Format: {key: 'val'} | Object |
- Headers | Headers in the current request. Format: {key: 'val'} | Object |
callback | Callback after the temporary key is obtained | Function |
Attribute | Description | Type | Required |
Authorization | Calculated signature string | String | Yes |
SecurityToken | sessionToken of the obtained temporary key, which corresponds to the x-cos-security-token field in the header. Use XCosSecurityToken instead of SecurityToken for SDKs on versions earlier than v1.2.0. | String | No |
SecretId
and SecretKey
. Each time a signature is required, it will be internally calculated by the instance.getAuthorization
callback function. Each time a signature is required, it will be calculated and returned to the instance through this callback.getSTS
callback. Each time a temporary key is required, it will be returned to the instance for signature calculation within the instance during each request.EnableTracker
as true
during initialization.
Then, add the following to the valid request domain name allowlist of the mini program: https://h.trace.qq.com;https://oth.str.beacon.qq.com;https://otheve.beacon.qq.com;
.new COS({EnableTracker: true,})
// The initialization process and upload parameters are omitted here.var cos = new COS({ ... });cos.uploadFile({ ... }, function(err, data) {if (err) {console.log('Upload failed', err);} else {console.log('Uploaded successfully', data);}});
// The initialization process and upload parameters are omitted here.var cos = new COS({ ... });cos.uploadFile({ ... }).then(data => {console.log('Uploaded successfully', data);}).catch(err => {console.log('Upload failed', err);});
async function upload() {// The initialization process and upload parameters are omitted here.var cos = new COS({ ... });try {var data = await cos.uploadFile({ ... });return { err: null, data: data }} catch (err) {return { err: err, data: null };}}// The returned value of the request can be obtained synchronously. Here is only an example. The format of the actual returned data can be customized.var uploadResult = await upload();if (uploadResult.err) {console.log('Upload failed', uploadResult.err);} else {console.log('Uploaded successfully', uploadResult.data);}
cos.getObjectUrl
currently only supports the callback method.var cos = new COS({....});/* Self-encapsulated upload method */function myUpload() {// COS SDK instances do not need to be created in each method// var cos = new COS({// ...// });cos.putObject({....});}/* Self-encapsulated deletion method */function myDelete() {// COS SDK instances do not need to be created in each method// var cos = new COS({// ...// });cos.deleteObject({....});}
cos.putBucket({Bucket: 'examplebucket-1250000000',Region: 'ap-beijing',}, function (err, data) {console.log(err || data);});
cos.getService(function (err, data) {console.log(data && data.Buckets);});
uploadFile
, which automatically uses simple upload for small files and multipart upload for large files for a better performance. For more information, see Uploading Object.
If you use the temporary key method, you need to grant the permissions of both simple upload and multipart upload as instructed in Working with COS API Authorization Policies.
For SDK FAQs, see FAQs./* Initialize COS */var cos = new COS({// getAuthorization: funciton() {}, // See above for initialization.SimpleUploadMethod: 'putObject', // We strongly recommend you use `putObject` when simply uploading small files during advanced upload and batch upload.});function handleFileInUploading(fileName, filePath) {cos.uploadFile({Bucket: 'examplebucket-1250000000', /* Your bucket name. Required. */Region: 'COS_REGION', /* Bucket region. Required */Key: fileName, /* Object key stored in the bucket (required), such as `1.jpg` and `a/b/test.txt`. */FilePath: filePath, /* Path of the file to be uploaded (required) */SliceSize: 1024 * 1024 * 5, /* Threshold (5 MB in this example) to trigger multipart upload. If the file size is less than 5 MB, simple upload is used. This parameter is optional. You can adjust it as needed. */onProgress: function(progressData) {console.log(JSON.stringify(progressData));}}, function(err, data) {if (err) {console.log('Upload failed', err);} else {console.log('Uploaded successfully');}});}/* Select a file to get the temporary path (with an image as an example here). For other types of files, see the official APIs of Weixin Mini Program. */wx.chooseImage({count: 1, // Default value: 9sizeType: ['original'], // You can specify whether to use the original or compressed image. The original is used by default value.sourceType: ['album', 'camera'], // You can specify whether the source is an album or camera. Both are included by default.success: function (res) {var filePath = res.tempFiles[0].path;var fileName = filePath.substr(filePath.lastIndexOf('/') + 1);handleFileInUploading(fileName, filePath);}});
cos.getBucket({Bucket: 'examplebucket-1250000000',Region: 'ap-beijing',Prefix: 'exampledir/', // Pass in the file prefixes to be listed here}, function (err, data) {console.log(err || data.Contents);});
cos.getObjectUrl
method. For more information, see Pre-signed URLs.cos.getObject({Bucket: 'examplebucket-1250000000',Region: 'ap-beijing',Key: 'exampleobject.txt',}, function (err, data) {console.log(err || data.Body);});
cos.deleteObject({Bucket: 'examplebucket-1250000000',Region: 'ap-beijing',Key: 'picture.jpg',}, function (err, data) {console.log(err || data);});
Was this page helpful?