详情页标题前

阿里云对象存储OSSAndroid快速入门-云淘科技

详情页1

本文介绍如何快速使用OSS Android SDK完成常见操作,例如创建存储空间、上传文件(Object)、下载文件等。

前提条件

已安装Android SDK。具体操作,请参见Android安装。

示例工程

示例工程用法如下:

  • 查看sample目录(包含上传本地文件、下载文件、断点续传、设置回调等示例),详情请参见GitHub。
  • 直接git clone工程。

运行本工程前,您需要配置必要参数Config。Config配置示例如下:

public class Config {    

    // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
    public static final String OSS_ENDPOINT = "https://oss-cn-hangzhou.aliyuncs.com";
    // 填写callback地址。
    public static final String OSS_CALLBACK_URL = "https://oss-demo.aliyuncs.com:23450";
    // 填写STS鉴权服务器地址。
    // 您还可以根据工程sts_local_server目录中本地鉴权服务脚本代码启动本地STS鉴权服务器。
    public static final String STS_SERVER_URL = "http://****/sts/getsts";
    
    public static final String BUCKET_NAME = "yourBucketName";
    public static final String OSS_ACCESS_KEY_ID = "yourAccessKeyId";;
    public static final String OSS_ACCESS_KEY_SECRET = "yourAccessKeySecret";

    public static final int DOWNLOAD_SUC = 1;
    public static final int DOWNLOAD_Fail = 2;
    public static final int UPLOAD_SUC = 3;
    public static final int UPLOAD_Fail = 4;
    public static final int UPLOAD_PROGRESS = 5;
    public static final int LIST_SUC = 6;
    public static final int HEAD_SUC = 7;
    public static final int RESUMABLE_SUC = 8;
    public static final int SIGN_SUC = 9;
    public static final int BUCKET_SUC = 10;
    public static final int GET_STS_SUC = 11;
    public static final int MULTIPART_SUC = 12;
    public static final int STS_TOKEN_SUC = 13;
    public static final int FAIL = 9999;
    public static final int REQUESTCODE_AUTH = 10111;
    public static final int REQUESTCODE_LOCALPHOTOS = 10112;
}
  • 关于如何配置STS鉴权服务器地址,请参见快速搭建移动应用直传服务。
  • 关于sts_local_server 脚本内容,请参见GitHub。

运行工程demo如下:阿里云对象存储OSSAndroid快速入门-云淘科技

创建存储空间

存储空间是OSS的全局命名空间,相当于数据的容器,可以存储若干文件。以下代码用于创建存储空间。

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 从STS服务获取的安全令牌(SecurityToken)。
String securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
// 创建OSSClient实例。
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);

// 填写存储空间名称。
CreateBucketRequest createBucketRequest = new CreateBucketRequest("bucketName");
// 设置存储空间的访问权限为公共读,默认为私有读写。
createBucketRequest.setBucketACL(CannedAccessControlList.PublicRead);
// 指定存储空间所在的地域。
createBucketRequest.setLocationConstraint("oss-cn-hangzhou");
OSSAsyncTask createTask = oss.asyncCreateBucket(createBucketRequest, new OSSCompletedCallback() {
    @Override
    public void onSuccess(CreateBucketRequest request, CreateBucketResult result) {
        Log.d("locationConstraint", request.getLocationConstraint());
        }
    @Override
    public void onFailure(CreateBucketRequest request, ClientException clientException, ServiceException serviceException) {
        // 请求异常。
        if (clientException != null) {
            // 本地异常,如网络异常等。
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // 服务异常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

上传文件

以下代码用于上传本地文件上传到OSS。

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 从STS服务获取的安全令牌(SecurityToken)。
String securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
// 创建OSSClient实例。
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);

// 构造上传请求。
PutObjectRequest put = new PutObjectRequest("", "", "");

// 异步上传时可以设置进度回调。
put.setProgressCallback(new OSSProgressCallback() {
    @Override
    public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
        Log.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);
    }
});

OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback() {
    @Override
    public void onSuccess(PutObjectRequest request, PutObjectResult result) {
        Log.d("PutObject", "UploadSuccess");
        Log.d("ETag", result.getETag());
        Log.d("RequestId", result.getRequestId());
    }

    @Override
    public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // 请求异常。
        if (clientExcepion != null) {
            // 本地异常,如网络异常等。
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // 服务异常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// task.cancel(); // 可以取消任务。
// task.waitUntilFinished(); // 等待上传完成。

下载文件

以下代码用于下载OSS文件到本地文件。

// yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
String endpoint = "yourEndpoint";
// 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 从STS服务获取的安全令牌(SecurityToken)。
String securityToken = "yourSecurityToken";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
// 创建OSSClient实例。
OSSClient oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider);
// 构造下载文件请求。
GetObjectRequest get = new GetObjectRequest("", "");

OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback() {
    @Override
    public void onSuccess(GetObjectRequest request, GetObjectResult result) {
        // 请求成功。
        Log.d("asyncGetObject", "DownloadSuccess");
        Log.d("Content-Length", "" + result.getContentLength());

        InputStream inputStream = result.getObjectContent();
        byte[] buffer = new byte[2048];
        int len;

        try {
            while ((len = inputStream.read(buffer)) != -1) {
                // 您可以在此处编写代码来处理下载的数据。
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    // GetObject请求成功,返回GetObjectResult。GetObjectResult包含一个输入流的实例。您需要自行处理返回的输入流。
    public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // 请求异常。
        if (clientExcepion != null) {
            // 本地异常,如网络异常等。
            clientExcepion.printStackTrace();
        }
        if (serviceException != null) {
            // 服务异常。
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});
// 取消任务。
// task.cancel(); 
// 等待任务完成。
// task.waitUntilFinished(); 

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

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

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

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

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

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

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

相关推荐

  • 阿里云对象存储OSS503错误-云淘科技

    本文介绍OSS返回503错误的原因和解决方案。 DownloadTrafficRateLimitExceeded Please reduce your download request traffic 问题原因:下载流量超出限制。 解决方案:内外网默认下载流量上限为5 Gbit/s。有调整需求请提交工单。 UploadTrafficRateLimitExce…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSSGo访问追踪-云淘科技

    为Bucket开启访问追踪后,您可以通过基于最后一次访问时间(Last Access Time)策略的生命周期规则来自动监测数据的访问模式并识别冷数据,然后将识别出来的冷数据进行存储类型的转换,从而达到数据的冷热分层存储,最终降低存储成本。本文介绍如何开启访问追踪以及查看访问追踪状态。 说明 关于查看Object最后一次访问时间的API接口说明,请参见Get…

    阿里云对象存储 2023年12月10日
  • 阿里云对象存储OSS定时备份-云淘科技

    您可以使用OSS的定时备份功能将存储空间(Bucket)内的文件(Object)定期备份到云备份中,当您的Object意外丢失时,可通过云备份进行恢复。 前提条件 已开通云备份。您可以在云备份产品页开通此功能。 已授权云备份读取OSS数据。 您可以在云备份管理控制台单击OSS备份,然后按页面指引完成授权。 费用说明 使用定时备份时,会产生如下费用: OSS的…

    阿里云对象存储 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS创建OSS投递任务(旧版)-云淘科技

    日志服务采集到数据后,支持将数据投递至OSS进行存储与分析。本文介绍创建OSS投递任务(旧版)的操作步骤。 前提条件 已创建Project和Logstore。具体操作,请参见创建Project和Logstore。 已采集到数据。具体操作,请参见数据采集。 已在日志服务Project所在的地域创建Bucket。具体操作,请参见控制台创建存储空间。 已完成云资源…

    2023年12月10日
  • 阿里云日志服务SLS管理服务关联角色AliyunServiceRoleForSLSAudit-云淘科技

    您可以授予日志服务应用(例如日志审计服务、EBS Lens等)使用SLS日志服务关联角色(AliyunServiceRoleForSLSAudit)来获取其他云服务中的资源。本文介绍AliyunServiceRoleForSLSAudit角色的应用场景和权限策略。 应用场景 当您在日志服务应用(例如日志审计服务、EBS Lens等)中进行日志采集时,日志服务…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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