产品动态
产品公告
API | 操作名 | 操作描述 |
简单上传对象 | 上传一个对象至存储桶 |
API | 操作名 | 操作描述 |
查询分块上传 | 查询正在进行中的分块上传信息 | |
初始化分块上传 | 初始化分块上传任务 | |
上传分块 | 分块上传对象 | |
查询已上传块 | 查询特定分块上传操作中的已上传的块 | |
完成分块上传 | 完成整个文件的分块上传 | |
终止分块上传 | 终止一个分块上传操作并删除已上传的块 |
{"version": "2.0","statement": [{"action": [//head操作"name/cos:HeadObject",//简单上传操作"name/cos:PutObject",//分块上传:初始化分块操作"name/cos:InitiateMultipartUpload",//分块上传:List 进行中的分块上传"name/cos:ListMultipartUploads",//分块上传:List 已上传分块操作"name/cos:ListParts",//分块上传:上传分块操作"name/cos:UploadPart",//分块上传:完成所有分块上传操作"name/cos:CompleteMultipartUpload",//取消分块上传操作"name/cos:AbortMultipartUpload"],"effect": "allow","resource": ["qcs::cos:ap-beijing:uid/1250000000:examplebucket-1250000000/doc/*"]}]}
// 实例化 PutObjectRequest,设置存储桶名、目标路径,本地文件路径。// 存储桶名称:由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.tencentcloud.com/cos5/bucket// 上传目标路径:是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4"// 本地文件:文件路径。let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");// 使用 CosXmlBaseService 服务实例调用 upload 方法,获取当前上传任务 task;CosXmlBaseService 具体使用方法,请参考 CosXmlBaseService。let task:UploadTask = CosXmlBaseService.default().upload(putReqeust);// 设置 initCallBack ,获取分块上传 uploadId (简单上传不返回 uploadId)task.initCallBack = (uploadId:string)=>{this.uploadId = uploadId;}// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {//complete:已发送的字节数//target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求 request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求 request// error:错误信息}}// 开始任务 task.start()
// 实例化 PutObjectRequest,设置存储桶名、目标路径、文件内容ArrayBuffer。// 上传 ArrayBuffer 格式数据时,不支持暂停续传。// // 存储桶名称:由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucket // 上传目标路径:是对象在 COS 上的完整路径,如果带目录的话,格式为 "video/xxx/movie.mp4" // buffer:文件内容,类型为:ArrayBuffer 。let buffer:ArrayBuffer = ;let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", buffer);// 使用 CosXmlBaseService 服务实例调用 upload 方法,获取当前上传任务 task;CosXmlBaseService 具体使用方法,请参考 CosXmlBaseService。let task:UploadTask = CosXmlBaseService.default().upload(putReqeust);// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {//complete:已发送的字节数//target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求 request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求 request// error:错误信息}}// 开始任务 task.start()
// 暂停:暂停当前任务,不会清空已上传的文件。 task.pause();
// 继续:重新启动暂停的任务。 task.resume();
// 实例化 PutObjectRequest,设置存储桶名、目标路径,本地文件。let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");// 使用 CosXmlBaseService 服务实例调用 upload 方法,获取当前上传任务 task;CosXmlBaseService具体使用方法,请参考 CosXmlBaseService。// uploadId:业务测保存的需要续传的上传任务 uploadId。从 task.initCallBack 回调中获取。let task:UploadTask = CosXmlBaseService.default().upload(putReqeust,uploadId);// 设置initCallBack ,获取分块上传 uploadId (简单上传不返回 uploadId)task.initCallBack = (uploadId:string)=>{this.uploadId = uploadId;}// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {//complete:已发送的字节数//target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求request// error:错误信息}}task.start()
取消:取消当前上传任务,会删除已上传的临时文件。取消后,不在支持续传。 task.cancel();
// 初始化putRequest;let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");let credential = new QCloudCredential(); credential.secretID = ''; credential.secretKey = ''; credential.token = '';// 设置当前请求临时密钥信息。putRequest.credential = credential;let task:UploadTask = CosXmlBaseService.default().upload(putReqeust);task.initCallBack = (uploadId:string)=>{this.uploadId = uploadId;}// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {// complete:已发送的字节数// target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求request// error:错误信息}}task.start()
for (int i = 0; i<20; i++) {let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");let task:UploadTask = CosXmlBaseService.default().upload(putReqeust);task.initCallBack = (uploadId:string)=>{this.uploadId = uploadId;}// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {//complete:已发送的字节数// target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求 request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求 request// error:错误信息}}task.start()}
let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");// 初始化 TransferConfig;let config = new TransferConfig();// 设置分块阈值为:2M。 config.simpleUploadLimit = 2 * 1024 * 1024;// 调用 upload 方法,并传入 config;let task:UploadTask = CosXmlBaseService.default().upload(putReqeust,undefined,config);task.initCallBack = (uploadId:string)=>{this.uploadId = uploadId;}// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {// complete:已发送的字节数// target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求 request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求 request// error:错误信息}}task.start()
let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");// 初始化 TransferConfig;let config = new TransferConfig();// 设置分块大小为:1M。 config.sliceLength = 1 * 1024 * 1024;// 调用 upload 方法,并传入 config;let task:UploadTask = CosXmlBaseService.default().upload(putReqeust,undefined,config);task.initCallBack = (uploadId:string)=>{this.uploadId = uploadId;}// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {// complete:已发送的字节数// target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求 request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求 request// error:错误信息}}task.start()
// 初始化putRequest;let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");// 限速值设置范围为819200 - 838860800,即800Kb/s - 800Mb/sputRequest.addHeader('x-cos-traffic-limit','819200')let task:UploadTask = CosXmlBaseService.default().upload(putReqeust);task.initCallBack = (uploadId:string)=>{this.uploadId = uploadId;}// 设置上传进度回调task.onProgress = (progress: HttpProgress) => {//complete:已发送的字节数// target:本次上传要发送的总字节数(即一个文件大小)};// 设置完成回调task.onResult = {// 成功回调onSuccess: (request, result) => {// request:当前请求 request// resultL:响应结果},// 失败回调onFail: (request, error) => {// request:当前请求 request// error:错误信息}}task.start()
/结尾,否则会被识别为文件夹。// 初始化putRequest;let putRequest = new PutObjectRequest("存储桶名称", "上传目标路径", "本地文件");// 设置进度回调request.onProgress = (progress: HttpProgress) => {//complete:已发送的字节数//target:本次上传要发送的总字节数(即一个文件大小)};try { let result:PutObjectResult = await CosXmlBaseService.default().putObject(request);} catch (e) { }
let request = new InitMultipartUploadRequest("存储桶名称", "上传目标路径"); try { let result:InitMultipartUploadResult = await CosXmlBaseService.default().initMultipartUpload(request); } catch (e) { }
// 实例化分块信息,每个分块长度、当前分块偏移量、本地文件路径。let body = new FilePartInfo('length','offset','本地路径');// partNumber 当前分块下标,从1开始。let request = new UploadPartRequest("存储桶名称","上传目标路径",(body.index).toString(),body); try { request.onProgress = (progress) => { // 进度回调 }; request.onSuccess = (response) => { // 分块上传成功 let headers = response!.headers; if (headers) {// 上传成功 将 etag 和 index 进行保存。// 所有分块上传完后,使用该信息调用完成上传接口。 let etag = headers[HttpHeader.ETAG]; let info = new CompleteMultipartUploadPart(parseInt((body.index + 1).toString()),etag); this.uploadedParts.add(info); } }; request.onFailure = (err: Error) => { // 分块上传失败 };CosXmlBaseService.default().partUpload(request); } catch (e) { }
// 查询特定分块上传中的已上传的块的方法.// 标识本次分块上传的 uploadIdlet request = new ListPartsRequest("存储桶名称","上传目标路径",uploadId);try{result = await CosXmlBaseService.default().listParts(request);}catch(e){}
let request = new CompleteMultiUploadRequest("存储桶名称","上传目标路径",uploadId);// 对所有分块信息进行排序。 this.uploadedParts.sort((obj1:CompleteMultipartUploadPart,obj2:CompleteMultipartUploadPart)=>{ if (obj1.partNumber < obj2.partNumber) { return -1; }else{ return 1; } })// 初始化 CompleteMultipartUpload; let completeInput = new CompleteMultipartUpload(); completeInput.part = this.uploadedParts; request.completeMultipartUpload = completeInput; try { let result = await CosXmlBaseService.default().completeMultiUpload(request); } catch (e) { }
// 舍弃一个分块上传且删除已上传的分片块的方法.let request = new AbortMultiUploadRequest("存储桶名称","上传目标路径",uploadId); try { await CosXmlBaseService.default().abortMultiUpload(request); } catch (e) { this.onFail(this.request,e); }
文档反馈