tencent cloud

文档反馈

单链接限速

最后更新时间:2022-01-23 14:39:50

    简介

    本文档提供关于调用上传下载接口时对链接进行限速。

    SDK API 参考

    SDK 所有接口的具体参数与方法说明,请参考 SDK API 参考

    使用说明

    限速值设置范围为 819200 - 838860800,单位默认为 bit/s,即100KB/s - 100MB/s,如果超出该范围将返回400错误。

    示例代码一:上传时对单链接限速

    TransferConfig transferConfig = new TransferConfig.Builder().build();
    // 初始化 TransferManager
    TransferManager transferManager = new TransferManager(cosXmlService,
           transferConfig);
    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.tencentcloud.com/cos5/bucket
    String bucket = "examplebucket-1250000000";
    String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键
    String srcPath = new File(context.getCacheDir(), "exampleobject")
           .toString(); //本地文件的绝对路径
    //若存在初始化分块上传的 UploadId,则赋值对应的 uploadId 值用于续传;否则,赋值 null
    String uploadId = null;
    PutObjectRequest putObjectRequest = new PutObjectRequest(bucket, cosPath, srcPath);
    // 设置单链接限速,单位为 bit/s,示例设置为 1M/s
    putObjectRequest.setTrafficLimit(1024 * 1024 * 8);
    // 上传文件
    COSXMLUploadTask cosxmlUploadTask = transferManager.upload(putObjectRequest, uploadId);
    //设置上传进度回调
    cosxmlUploadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
       @Override
       public void onProgress(long complete, long target) {
           // todo Do something to update progress...
       }
    });
    //设置返回结果回调
    cosxmlUploadTask.setCosXmlResultListener(new CosXmlResultListener() {
       @Override
       public void onSuccess(CosXmlRequest request, CosXmlResult result) {
           COSXMLUploadTask.COSXMLUploadTaskResult uploadResult =
                   (COSXMLUploadTask.COSXMLUploadTaskResult) result;
       }
        // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
       // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
       @Override
       public void onFail(CosXmlRequest request,
                          @Nullable CosXmlClientException clientException,
                          @Nullable CosXmlServiceException serviceException) {
           if (clientException != null) {
               clientException.printStackTrace();
           } else {
               serviceException.printStackTrace();
           }
       }
    });
    //设置任务状态回调, 可以查看任务过程
    cosxmlUploadTask.setTransferStateListener(new TransferStateListener() {
       @Override
       public void onStateChanged(TransferState state) {
           // todo notify transfer state
       }
    });
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    示例代码二:下载时对单链接限速

    //.cssg-snippet-body-start:[transfer-download-object]
    // 高级下载接口支持断点续传,所以会在下载前先发起 HEAD 请求获取文件信息。
    // 如果您使用的是临时密钥或者使用子账号访问,请确保权限列表中包含 HeadObject 的权限。
    // 初始化 TransferConfig,这里使用默认配置,如果需要定制,请参考 SDK 接口文档
    TransferConfig transferConfig = new TransferConfig.Builder().build();
    //初始化 TransferManager
    TransferManager transferManager = new TransferManager(cosXmlService,
           transferConfig);
    // 存储桶名称,由bucketname-appid 组成,appid必须填入,可以在COS控制台查看存储桶名称。 https://console.tencentcloud.com/cos5/bucket
    String bucket = "examplebucket-1250000000";
    String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键
    //本地目录路径
    String savePathDir = context.getExternalCacheDir().toString();
    //本地保存的文件名,若不填(null),则与 COS 上的文件名一样
    String savedFileName = "exampleobject";
    GetObjectRequest getObjectRequest = new GetObjectRequest(bucket, cosPath, savePathDir, savedFileName);
    // 设置单链接限速,单位为 bit/s,示例设置为 1M/s
    getObjectRequest.setTrafficLimit(1024 * 1024 * 8);
    Context applicationContext = context.getApplicationContext(); // application
    // context
    COSXMLDownloadTask cosxmlDownloadTask =
           transferManager.download(applicationContext, getObjectRequest);
    //设置下载进度回调
    cosxmlDownloadTask.setCosXmlProgressListener(new CosXmlProgressListener() {
       @Override
       public void onProgress(long complete, long target) {
           // todo Do something to update progress...
       }
    });
    //设置返回结果回调
    cosxmlDownloadTask.setCosXmlResultListener(new CosXmlResultListener() {
       @Override
       public void onSuccess(CosXmlRequest request, CosXmlResult result) {
           COSXMLDownloadTask.COSXMLDownloadTaskResult downloadTaskResult =
                   (COSXMLDownloadTask.COSXMLDownloadTaskResult) result;
       }
        // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
       // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
       @Override
       public void onFail(CosXmlRequest request,
                          @Nullable CosXmlClientException clientException,
                          @Nullable CosXmlServiceException serviceException) {
           if (clientException != null) {
               clientException.printStackTrace();
           } else {
               serviceException.printStackTrace();
           }
       }
    });
    //设置任务状态回调,可以查看任务过程
    cosxmlDownloadTask.setTransferStateListener(new TransferStateListener() {
       @Override
       public void onStateChanged(TransferState state) {
           // todo notify transfer state
       }
    });
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持