博客
关于我
Android OSS下载文件
阅读量:168 次
发布时间:2019-02-28

本文共 4761 字,大约阅读时间需要 15 分钟。

近期,公司要求使用OSS下载文件,优化下载模块

首先,想要使用OSS,必须下载其相关依赖

implementation 'com.aliyun.dpa:oss-android-sdk:2.9.5'   // implementation project(':oss-android-sdk')

依赖下载成功后,需要配置Config文件(提高安全性,使用STS方式)

public class Config {       // 访问的endpoint地址    public static final String OSS_ENDPOINT = "后台获取的end_point地址";    //callback 测试地址    public static final String OSS_CALLBACK_URL = "上传的callback";       public static final String STS_SERVER_URL = "后台获取STS地址";//STS 地址    public static final String BUCKET_NAME = "后台提供的Bucket_name";    public static final String OSS_ACCESS_KEY_ID = "后台提供的AccessKeyID";    public static final String OSS_ACCESS_KEY_SECRET = "后台提供的AccessKeySecret";    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;    public static final int REQUESTCODE_OPEN_DOCUMENT = 10113;}

在我们配置好Config文件后,就可以初始化OSS了:

OSSCredentialProvider credentialProvider;        //使用自己的获取STSToken的类       	credentialProvider = new OSSAuthCredentialsProvider(Config.STS_SERVER_URL);       	editBucketName = Config.BUCKET_NAME;        ClientConfiguration conf = new ClientConfiguration();        conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒        conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒        conf.setMaxConcurrentRequest(5); // 最大并发请求书,默认5个        conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次        OSS oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider, conf);        OSSLog.enableLog();		//开启Log打印        return new OssService(oss, editBucketName, displayer);

初始化完成后,就可以进行下载啦:

GetObjectRequest get = new GetObjectRequest(Config.BUCKET_NAME, 下载的文件路径);		//此处为设置进度条,如不需要可以删除        get.setProgressListener(new OSSProgressCallback
() { @Override public void onProgress(GetObjectRequest request, long currentSize, long totalSize) { Log.d("GetObject", "currentSize: " + currentSize + " totalSize: " + totalSize); int progress = (int) (100 * currentSize / totalSize); mDisplayer.updateProgress(progress); mDisplayer.displayInfo("下载进度: " + String.valueOf(progress) + "%"); } }); OSSLog.logDebug("asyncGetObject"); // 此处下载任务 OSSAsyncTask task = mOss.asyncGetObject(get, new OSSCompletedCallback
() { @Override public void onSuccess(GetObjectRequest request, GetObjectResult result) { // 请求成功 InputStream inputStream = result.getObjectContent(); //Bitmap bm = BitmapFactory.decodeStream(inputStream); try { //需要根据对应的View大小来自适应缩放 Bitmap bm = mDisplayer.autoResizeFromStream(inputStream); long get_end = System.currentTimeMillis(); OSSLog.logDebug("get cost: " + (get_end - get_start) / 1000f); mDisplayer.downloadComplete(bm); mDisplayer.displayInfo("Bucket: " + mBucket + "\nObject: " + request.getObjectKey() + "\nRequestId: " + result.getRequestId()); } catch (IOException e) { e.printStackTrace(); } } @Override public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) { String info = ""; // 请求异常 if (clientExcepion != null) { // 本地异常如网络异常等 clientExcepion.printStackTrace(); info = clientExcepion.toString(); } if (serviceException != null) { // 服务异常 Log.e("ErrorCode", serviceException.getErrorCode()); Log.e("RequestId", serviceException.getRequestId()); Log.e("HostId", serviceException.getHostId()); Log.e("RawMessage", serviceException.getRawMessage()); info = serviceException.toString(); } mDisplayer.downloadFail(info); mDisplayer.displayInfo(info); } });

转载地址:http://fayj.baihongyu.com/

你可能感兴趣的文章
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0_Postgresql和Mysql同时指定库_指定多表_全量同步到Mysql数据库以及Hbase数据库中---大数据之Nifi工作笔记0060
查看>>
NIFI1.21.0最新版本安装_连接phoenix_单机版_Https登录_什么都没改换了最新版本的NIFI可以连接了_气人_实现插入数据到Hbase_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0最新版本安装_配置使用HTTP登录_默认是用HTTPS登录的_Https登录需要输入用户名密码_HTTP不需要---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增加修改实时同步_使用JsonPath及自定义Python脚本_03---大数据之Nifi工作笔记0055
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_插入修改删除增量数据实时同步_通过分页解决变更记录过大问题_01----大数据之Nifi工作笔记0053
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表或全表增量同步_实现指定整库同步_或指定数据表同步配置_04---大数据之Nifi工作笔记0056
查看>>
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>