릴리스 노트
제품 공지
var COS = require('./lib/cos-wx-sdk-v5.js')
npm install cos-wx-sdk-v5
var COS = require('cos-wx-sdk-v5');를 사용하여 참고합니다.examplebucket-1250000000.cos.ap-guangzhou.myqcloud.comForcePathStyle: true를 전송해야 합니다. 해당 방식은 리전 도메인을 화이트리스트로 설정해야 합니다. 예: cos.ap-guangzhou.myqcloud.comvar COS = require('./lib/cos-wx-sdk-v5.js')
var cos = new COS({// ForcePathStyle: true, // 많은 버킷을 사용한 경우 확장명을 열어 설정한 화이트리스트 수를 줄이면 요청 시 리전 도메인을 사용합니다.getAuthorization: function (options, callback) {// 임시 키 비동기 획득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,XCosSecurityToken: credentials.sessionToken,// 사용자 브라우저 로컬 시간과의 편차가 너무 커 서명에 오류가 발생하지 않도록 서버 시간을 서명 시작 시간으로 반환할 것을 권장합니다.StartTime: data.startTime, // 타임스탬프. 단위: 초. 예: 1580000000ExpiredTime: data.expiredTime, // 타임스탬프. 단위: 초. 예: 1580000900});}});}});// 이어서 cos 인스턴스를 통해 COS 요청을 호출할 수 있습니다.// TODO
var cos = new COS({// 필수 매개변수getAuthorization: function (options, callback) {// 서버 JS와 PHP 예시: https://github.com/tencentyun/cos-js-sdk-v5/blob/master/server/// 서버의 기타 언어는 COS STS SDK: https://github.com/tencentyun/qcloud-cos-sts-sdk를 참고하십시오.// STS 상세 문서 가이드는 https://www.tencentcloud.com/document/product/436/14048을 참고하십시오.wx.request({url: 'https://example.com/server/sts.php',data: {// 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,XCosSecurityToken: credentials.sessionToken,// 사용자 브라우저 로컬 시간과의 편차가 너무 커 서명에 오류가 발생하지 않도록 서버 시간을 서명 시작 시간으로 반환할 것을 권장합니다.StartTime: data.startTime, // 타임스탬프. 단위: 초. 예: 1580000000ExpiredTime: data.expiredTime, // 타임스탬프. 단위: 초. 예: 1580000900});}});}});
var cos = new COS({// 필수 매개변수getAuthorization: function (options, callback) {// 서버 예시: 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,XCosSecurityToken: credentials.sessionToken,// 사용자 브라우저 로컬 시간과의 편차가 너무 커 서명에 오류가 발생하지 않도록 서버 시간을 서명 시작 시간으로 반환할 것을 권장합니다.StartTime: data.startTime, // 타임스탬프. 단위: 초. 예: 1580000000ExpiredTime: data.expiredTime, // 타임스탬프. 단위: 초. 예: 1580000900ScopeLimit: true, // 세밀한 권한 제어는 true로 설정해 키가 동일한 요청을 하는 경우에만 재사용하도록 제한합니다.});}});}});
var cos = new COS({// 필수 매개변수getAuthorization: function (options, callback) {// 서버에서 서명을 획득합니다. 해당 언어의 COS SDK: https://www.tencentcloud.com/document/product/436/6474?from_cn_redirect=1를 참고하십시오.// 주의사항: 보안 리스크가 있기 때문에 백그라운드는 method, pathname을 통해 권한을 엄격히 제어해야 합니다. 예: 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,// XCosSecurityToken: data.sessionToken, // 임시 키를 사용하는 경우, sessionToken을 XCosSecurityToken에 전송해야 합니다.});}});},});
// SECRETID와 SECRETKEY는 https://console.tencentcloud.com/cam/capi에 로그인하여 조회 및 관리하십시오.var cos = new COS({SecretId: 'SECRETID',SecretKey: 'SECRETKEY',});
매개변수 이름 | 매개변수 설명 | 유형 | 필수 입력 |
SecretId | 사용자의 SecretId | String | 아니요 |
SecretKey | 사용자의 SecretKey. 키가 노출되지 않도록 프런트 엔드 디버깅 시에만 사용하는 것을 권장합니다. | String | 아니요 |
FileParallelLimit | 동일한 인스턴스에 업로드하는 파일의 동시 전송 수. 기본값: 3 | Number | 아니요 |
ChunkParallelLimit | 동일한 업로드 파일의 멀티파트 동시 전송 수. 기본값: 3 | Number | 아니요 |
ChunkRetryTimes | 멀티파트 업로드 및 멀티파트 복사 시 오류가 발생하여 재시도한 횟수. 기본값: 3(첫 번째 시도를 더하면 요청은 총 4번) | Number | 아니요 |
ChunkSize | 멀티파트 업로드 시 각 파트의 바이트 수. 기본값: 1048576(1MB) | Number | 아니요 |
SliceSize | uploadFiles로 일괄 업로드 시, 파일 크기가 해당 값보다 크면 멀티파트 업로드 sliceUploadFile을 사용하고, 그렇지 않을 경우 간편 업로드 putObject를 사용합니다. 기본값: 1048576(1MB) | Number | 아니요 |
CopyChunkParallelLimit | 멀티파트 복사 작업 중에 멀티파트 업로드한 동시 전송 수. 기본값: 20 | Number | 아니요 |
CopyChunkSize | sliceCopyFile로 파일 멀티파트 복사 시, 각 파트의 바이트 수. 기본값: 10485760(10MB) | Number | 아니요 |
CopySliceSize | sliceCopyFile로 파일 멀티파트 복사 시, 파일 크기가 해당 값보다 크면 멀티파트 복사 sliceCopyFile을 사용하고, 그렇지 않을 경우 간편 복사 putObjectCopy를 사용합니다. 기본값: 10485760(10MB) | Number | 아니요 |
ProgressInterval | 업로드 진행률 콜백 방법 onProgress의 콜백 빈도. 단위: ms, 기본값: 1000 | Number | 아니요 |
Protocol | 요청 시 사용하는 프로토콜. 옵션 항목으로 https:와 http:가 있습니다. 기본적으로 현재 페이지가 http:인 경우 http:를 사용하고, 아닌 경우 https:를 사용합니다. | String | 아니요 |
ServiceDomain | getService 방법 호출 시 요청하는 도메인. 예: service.cos.myqcloud.com | String | 아니요 |
Domain | 버킷 및 객체 작업 API 호출 시 요청 도메인을 사용자 정의합니다. "{Bucket}.cos.{Region}.myqcloud.com" 과 같은 템플릿을 사용할 수 있으며, API 호출 시 매개변수로 전달하는 Bucket 및 Region으로 변경할 수 있습니다. | String | 아니요 |
UploadQueueSize | 업로드 큐 최대 길이. 초과된 작업이 waiting, checking, uploading 상태가 아닌 경우 정리합니다. 기본값: 10000 | Number | 아니요 |
ForcePathStyle | 강제 사용 후 확장명 모드로 요청 발송. 확장명 모드의 Bucket에 도메인 뒤의 pathname을 넣고, 서명 pathname 계산을 추가합니다. 기본값: false | Boolean | 아니요 |
UploadCheckContentMd5 | 파일을 강제 업로드하여 Content-MD5 검증. 파일에 대해 Body를 요청하여 md5를 계산하고 header의 Content-MD5 필드에 올립니다. 기본값: false | Boolean | 아니요 |
getAuthorization | 서명을 획득하는 콜백 방법. SecretId, SecretKey가 없는 경우 이 매개변수는 필수입니다. 주의사항: 해당 콜백 방법은 인스턴스 초기화 시 전송되며, 인스턴스로 인터페이스를 호출해야 실행되어 서명을 획득합니다. | Function | 아니요 |
getAuthorization: function(options, callback) { ... }
매개변수 이름 | 매개변수 설명 | 유형 |
options | 임시 키에 필요한 매개변수 객체 획득 | Object |
- Bucket | 버킷의 이름. 이름 생성 규칙은 BucketName-APPID이며, 여기에 입력하는 버킷 이름은 반드시 해당 형식을 따라야 합니다. | String |
- Region | String | |
callback | 임시 키 획득 후 리턴 방법 | Function |
속성 이름 | 매개변수 설명 | 유형 | 필수 입력 |
TmpSecretId | 획득한 임시 키의 tmpSecretId | String | 예 |
TmpSecretKey | 다시 획득한 임시 키의 tmpSecretKey | String | 아니요 |
XCosSecurityToken | 획득한 임시 키의 sessionToken. 해당 header의 x-cos-security-token 필드 | String | 아니요 |
StartTime | 키를 획득한 시작 시간. 즉 획득한 시간의 타임스탬프. 단위: 초. startTime. 예: 1580000000. 서명 시작 시간에 사용됩니다. 해당 매개변수를 전송하면 프런트 엔드 시간의 편차로 인한 서명 만료 문제를 방지할 수 있습니다. | String | 아니요 |
ExpiredTime | 획득한 임시 키의 expiredTime, 타임아웃 시간의 타임스탬프. 단위 초. 예: 1580000900 | String | 아니요 |
getAuthorization: function(options, callback) { ... }
매개변수 이름 | 매개변수 설명 | 유형 |
options | 서명에 필요한 매개변수 객체 획득 | Object |
- Method | 현재 요청한 Method | Object |
- Pathname | 요청 경로. 서명 계산에 사용 | String |
- Key | 객체 키(Object의 이름). 객체는 버킷에 있는 고유 식별자입니다. 자세한 내용은 객체 개요를 참고하십시오. 주의사항: 인스턴스로 요청한 인터페이스가 객체 작업과 관련된 인터페이스가 아닐 경우, 해당 매개변수는 빈칸으로 표시됩니다. | String |
- Query | 현재 요청한 query 매개변수 객체. {key: 'val'} 의 형식 | Object |
- Headers | 현재 요청한 header 매개변수 객체. {key: 'val'}의 형식 | Object |
callback | 임시 키 획득 후 콜백 | Function |
속성 이름 | 매개변수 설명 | 유형 | 필수 입력 |
Authorization | 계산 후 얻은 서명 문자열 | String | 예 |
XCosSecurityToken | 획득한 임시 키의 sessionToken. 해당 header의 x-cos-security-token 필드 | String | 아니요 |
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);});
// 먼저 파일을 선택하고 임시 경로를 획득합니다.wx.chooseImage({count: 1, // 기본값: 9sizeType: ['original'], // 원본 이미지 또는 압축 이미지를 지정할 수 있습니다. 기본값은 원본 이미지입니다.sourceType: ['album', 'camera'], // 출처를 사진첩 또는 카메라로 지정할 수 있습니다. 기본값은 둘 다입니다.success: function (res) {var filePath = res.tempFiles[0].path;var filename = filePath.substr(filePath.lastIndexOf('/') + 1);cos.postObject({Bucket: 'examplebucket-1250000000',Region: 'ap-beijing',Key: '타깃 경로/' + filename,FilePath: filePath,onProgress: function (info) {console.log(JSON.stringify(info));}}, function (err, data) {console.log(err || data);});}});
cos.getBucket({Bucket: 'examplebucket-1250000000',Region: 'ap-beijing',Prefix: 'exampledir/', // 여기서 열거한 파일 접두사를 전달합니다.}, function (err, data) {console.log(err || data.Contents);});
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);});
피드백