tencent cloud

文档反馈

单链接限速

最后更新时间:2024-01-04 15:52:02

    简介

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

    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 电话支持