详情页标题前

阿里云对象存储OSSJava断点续传下载-云淘科技

详情页1

下载文件时,如果网络不稳定或者程序异常退出,会导致下载失败,甚至重试多次仍无法完成下载。为此,OSS提供了断点续传下载功能。断点续传下载将需要下载的文件分成若干个分片分别下载,所有分片都下载完成后,将所有分片合并成完整的文件。

注意事项

  • 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见访问域名和数据中心。
  • 本文以从环境变量读取访问凭证为例。如何配置访问凭证,请参见Java配置访问凭证。

  • 本文以OSS域名新建OSSClient为例。如果您希望通过自定义域名、STS等方式新建OSSClient,请参见新建OSSClient。
  • 要断点续传下载,您必须有oss:GetObject权限。具体操作,请参见为RAM用户授权自定义的权限策略。

示例代码

以下代码用于断点续传下载。

import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.*;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "examplebucket";
        // 填写Object完整路径,例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        String objectName = "exampledir/exampleobject.txt";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
      	try {
            // 请求10个任务并发下载。
            DownloadFileRequest downloadFileRequest = new DownloadFileRequest(bucketName, objectName);
            // 指定Object下载到本地文件的完整路径,例如D:\localpath\examplefile.txt。
            downloadFileRequest.setDownloadFile("D:\localpath\examplefile.txt");
            // 设置分片大小,单位为字节,取值范围为100 KB~5 GB。默认值为100 KB。
            downloadFileRequest.setPartSize(1 * 1024 * 1024);
            // 设置分片下载的并发数,默认值为1。
            downloadFileRequest.setTaskNum(10);
            // 开启断点续传下载,默认关闭。
            downloadFileRequest.setEnableCheckpoint(true);
            // 设置断点记录文件的完整路径,例如D:\localpath\examplefile.txt.dcp。
            // 只有当Object下载中断产生了断点记录文件后,如果需要继续下载该Object,才需要设置对应的断点记录文件。下载完成后,该文件会被删除。
            //downloadFileRequest.setCheckpointFile("D:\localpath\examplefile.txt.dcp");

            // 下载文件。
            DownloadFileResult downloadRes = ossClient.downloadFile(downloadFileRequest);
            // 下载成功时,会返回文件元信息。
            ObjectMetadata objectMetadata = downloadRes.getObjectMetadata();
            System.out.println(objectMetadata.getETag());
            System.out.println(objectMetadata.getLastModified());
            System.out.println(objectMetadata.getUserMetadata().get("meta"));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (Throwable ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

相关文档

  • 关于断点续传下载的完整示例代码,请参见GitHub示例。

  • 关于断点续传下载的API接口说明,请参见GetObject。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157095.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云对象存储OSS使用函数计算打包下载OSS文件-云淘科技

    本文介绍如何使用函数计算将对象存储OSS上多个文件(Object)打包下载到本地。 前提条件 已开通函数计算。 您可以在函数计算产品详情页开通函数计算。 已授权函数计算访问OSS。 具体步骤,请参见授予函数计算访问其他云服务的权限。 已在某个Bucket的指定目录下上传多个文件。本教程以在华东1(杭州)地域的examplebucket下的dir目录中上传多个…

    阿里云对象存储 2023年12月10日
  • 阿里云ECS云服务器上传镜像文件至OSS-云淘科技

    在ECS控制台导入自定义镜像之前,您需要在阿里云对象存储OSS(Object Storage Service)中创建镜像文件的存储空间(Bucket),然后将您准备好的镜像文件上传至该Bucket中。本文为您介绍上传镜像文件的相关权限说明以及操作流程。 前提条件 已获取镜像文件。具体操作,请参见获取Linux镜像文件和获取Windows镜像文件。 已使用阿里…

    阿里云服务器 2023年12月9日
  • 阿里云对象存储OSSNode.js分片上传-云淘科技

    OSS提供的分片上传(Multipart Upload)功能,将要上传的较大文件(Object)分成多个分片(Part)来分别上传,上传完成后再调用CompleteMultipartUpload接口将这些Part组合成一个Object来达到断点续传的效果。 背景信息 当需要上传的文件较大时,您可以通过MultipartUpload方法进行分片上传。分片上传是…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS锐化-云淘科技

    您可以通过锐化参数,提高存储在OSS内原图的清晰度。本文介绍对图片进行锐化时所用到的参数及示例。 参数说明 操作名称:sharpen 参数说明如下: 参数 描述 取值范围 [value] 设置锐化效果的强度。 [50,399] 取值越大,图片越清晰,但过大的值可能会导致图片失真。为达到较优效果,推荐取值为100。 示例 您可以通过文件URL、SDK、API方…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云对象存储OSSlogging(日志转存)-云淘科技

    访问对象存储OSS的过程中会产生大量的访问日志,您可以通过日志转存功能将这些日志按照固定命名规则,以小时为单位生成日志文件写入您指定的Bucket。您可以通过logging命令开启、查询、关闭Bucket的日志转存配置。 注意事项 本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./ossutil64替换成对应的Binary名称。详情请参…

    阿里云对象存储 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。