Android 快速集成阿里云OSS服务2020
一、兼单快速集成
1、打开阿里云官网 https://www.aliyun.com并注册账号,然后登陆
2、在阿里云主页选择产品分类,再选择对象存储OSS
3、点击帮助文档开始进行集成
(1)、点击帮助文档进入开发文档界面
(2)在文档目录——>SDK参考——>Android——>安装,这里有几种方式,本人建议最快速简便的方式在app下的build.gradle文件加入依赖,再进行编译就OK了,友情提示:不要忘记加入必要权限和混淆设置哦!
二、初始化配置
1、在配置参数之前最好了解下OSS服务中的基本概念 操作:开发指南——>基本概念
2、创建储存空间 一般这个步骤是由后台来配置,然后会将各种参数给前端(这样的话接下来的第三步就可以照抄了)
(1)打开OSS服务控制台
(2)选择存储空间列表 创建Bucket,配置各类属性
3、配置必要参数 快速入门
(1)、这里最主要的是配置区域地址、空间名字以及OSS服务的app_key和app_secret
(2)文件上传下载处理类 由于我的项目中没有用到STS鉴权模式,用到的是最简便的方式,如有用到鉴权模式的同学,可以参考文档进行集成。这个处理类本人对于单文件上传用的是同步上传的方式,多文件上传用的是异步上传。
public class AliyunOSSUtils {private static AliyunOSSUtils mOSSUtils;private UploadListener listener;private static OSS oss;/*** 单一实例*/public static AliyunOSSUtils getInstance() {if (mOSSUtils == null) {synchronized (AliyunOSSUtils.class) {if (mOSSUtils == null) {mOSSUtils = new AliyunOSSUtils();}}}return mOSSUtils;}public AliyunOSSUtils() { // 配置类如果不设置,会有默认配置。OSSPlainTextAKSKCredentialProvider provider = new OSSPlainTextAKSKCredentialProvider(MyOSSConfig.OSS_ACCESS_KEY_ID, MyOSSConfig.OSS_ACCESS_KEY_SECRET);ClientConfiguration conf = new ClientConfiguration();conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒。conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒。conf.setMaxConcurrentRequest(5); // 最大并发请求数,默认5个。conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次。oss = new OSSClient(MyApplication.getInstance(), MyOSSConfig.OSS_EXTERNAL_ENDPOINT, provider, conf);}/*** 上传单个文件** @param name* @param localPath*/public String uploadFile(String name, String localPath) {// 构造上传请求。PutObjectRequest put = new PutObjectRequest(BUCKET_NAME, name, localPath);// 异步上传时可以设置进度回调。put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {@Overridepublic void onProgress(PutObjectRequest request, long currentSize, long totalSize) {L.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);}});try {// 开始同步上传PutObjectResult result = oss.putObject(put);L.d("upload: result=" + result);// 得到一个外网可访问的地址String url = oss.presignPublicObjectURL(BUCKET_NAME, name); // if (listener != null) // listener.onUpLoadComplete(url);// 格式打印输出L.e("--------------同步上传:" + url + "-----------");L.d(String.format("PublicObjectURL:%s", url));return url;} catch (Exception e) {e.printStackTrace();return null;}}//上传多个文件public void upLoadMultipleFile(String name, String path) {// 构造上传请求。PutObjectRequest put = new PutObjectRequest(BUCKET_NAME, name, path);// 异步上传时可以设置进度回调。put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {@Overridepublic void onProgress(PutObjectRequest request, long currentSize, long totalSize) {L.d("PutObject", "currentSize: " + currentSize + " totalSize: " + totalSize);}});OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {@Overridepublic void onSuccess(PutObjectRequest request, PutObjectResult result) {Log.d("PutObject", "UploadSuccess");Log.d("ETag", result.getETag());Log.d("RequestId", result.getRequestId());String url = oss.presignPublicObjectURL(BUCKET_NAME, name);L.e("图片地址--------------" + url + "-----------------");if (listener != null)listener.onUpLoadComplete(url);}@Overridepublic 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(); // 等待上传完成。}public void setUpLoadListener(UploadListener listener) {this.listener = listener;}/*** 下载文件** @param name*/public void downLoadFile(String name) {// 构造下载文件请求。GetObjectRequest get = new GetObjectRequest(BUCKET_NAME, name);OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {@Overridepublic 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,其持有一个输入流的实例。返回的输入流,请自行处理。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(); // 等待任务完成。}public interface UploadListener {void onUpLoadComplete(String url);}}
三、具体用法
1、初始化
AliyunOSSUtils ossUtils = AliyunOSSUtils.getInstance();
2、设置上传回调
ossUtils.setUpLoadListener(new AliyunOSSUtils.UploadListener() {@Overridepublic void onUpLoadComplete(String url) {data.put("images[" + upLoadNum + "]", url);upLoadNum++;L.e("图片地址2-----" + url + "---------------------");if (upLoadNum < fileList.size()) {L.e("上传数量----" + upLoadNum + "-------------");submit2aliyun(fileList.get(upLoadNum));} else {//这里处理所有文件上传成功后的逻辑}} });
3、文件上传
int upLoadNum; Map<String, String> data = new HashMap<>();//提交 private void commit() {if (mList.size() < 1) {showToast("请添加照片");return;}upLoadNum = 0;data.clear();//上传至阿里云submit2aliyun(fileList.get(upLoadNum));}
4、这里submit2aliyun()方法用到雪花算法,这里我就不讲解了,如果需要的可以自行去了解,不需要的直接调用多文件上传的方法就OK了!
//上传至阿里云 private void submit2aliyun(File file) {String name = file.getName();SnowFlakeWorkId snowId = new SnowFlakeWorkId();String key = snowId.nextId() + name.substring(name.indexOf("."));ossUtils.upLoadMultipleFile("gallery/" + key, file.getAbsolutePath());} 到此就告一段落了。本人新手,第一次写博客,如有错误的地方,还望大家多多指正。如能帮到大家我很欣慰。
Android 快速集成阿里云OSS服务2020相关推荐
- Spring Boot集成阿里云视频点播服务的过程记录
阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...
- 【24-业务开发-基础业务-品牌管理-图片管理-阿里云OSS服务开通和使用-阿里云OSS服务API使用-SpringCloudAlibaba OSS服务的使用】
一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...
- 阿里云OSS服务使用操作流程
阿里云OSS服务使用操作流程 阿里云OSS服务使用操作流程 OSS服务简介 OSS官方帮助文档 服务开通激活 1.进入官网注册 2.选择OSS产品 3.激活服务 4.激活后进入管理控制台 快速使用 1 ...
- 阿里云OSS服务端签名前端JS直传(php)示例
阿里云OSS服务端签名后前端JS直传(php)示例 需求:服务端上传图片太慢,需要使用前端直传的方式.但前端把阿里云的 AccessKey ID 和 AccessKey Secret 放在前端文件中会 ...
- 集成阿里云OSS编写AliyunOSSUtil
集成阿里云OSS编写AliyunOSSUtil 文章目录 集成阿里云OSS编写AliyunOSSUtil 1.引入sdk依赖 2.添加yml配置文件 3.编写 AliyunOSSUtil文件 3.1 ...
- 使用阿里云OSS服务搭建私人图床
阿里云OSS服务搭建私人图床 由于Gitee搭建图床的不确定性,笔者开始使用云服务提供商的对象存储服务搭建私人图床.相比于免费的Gitee,一年平均10元的花费也不算贵,并且得到了更为优秀的体验,有兴 ...
- 物联网架构成长之路(18)-接阿里云OSS服务
1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...
- SpringBoot集成阿里云OSS上传文件
文章目录 前言 一.准备环境 1.在搜索框搜索 对象存储OSS 2.创建Bucket 3.找到开发相关信息 二.具体代码 1.Maven依赖 2.application.yml配置 3.AliOssP ...
- SringBoot集成阿里云OSS上传文件
上一篇文章讲了如何将文件从linux同步到阿里云的oss有兴趣的小伙伴可以去看看,这篇文章讲述如何将文件上传到阿里云oss上,本文只详细写出后端java代码示例,前端和无用代码都会省略,可以上传文件, ...
最新文章
- 开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势
- python面向对象基础
- 【原】SQL 取当前年 (年初 1月1号) 当前月 (月初 1号) 当前日 (零点)
- how can you understand the world
- 教你前端input框只允许输入正整数
- OpenCV Error: Unsupported format or combination of formats (Unsupported combination of input and out
- 不能说的秘密-重载、重写与继承中的构造方法
- python教程视频ajax_Ajax教程
- 武汉理工大学刷课,刷在线作业程序,做作业脚本
- vmware卸载不干净,重装不了问题;装了虚拟机上不了网问题;装了虚拟机发现windows在cmd中ping不了虚拟机,虚拟机能ping的了windows;secureCRT或者filezilla连接
- Android语言切换原理
- xlsxwriter模块安装linux,XlsxWriter模块常用方法
- AIX补丁中TL、SP、CSP、IF、PTF的含义
- html音频禁止自动播放,HTML iframe允许音频文件的自动播放无法正常使用
- Android 模块化开发
- 下载json文件,解决浏览器对JSON文件链接直接打开问题
- 获取手机指纹库指纹信息
- 快速原型设计工具(Axure)的简单使用
- 无法启动计算机丢失s7EPAAPI,200smart编程软件无法启动提示s7epaapi.dll丢失。-工业支持中心-西门子中国...
- window设置minio自启动时候*报错某些服务未由其他服务使用时将自动停止