一、兼单快速集成

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相关推荐

  1. Spring Boot集成阿里云视频点播服务的过程记录

    阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...

  2. 【24-业务开发-基础业务-品牌管理-图片管理-阿里云OSS服务开通和使用-阿里云OSS服务API使用-SpringCloudAlibaba OSS服务的使用】

    一.知识回顾 [0.三高商城系统的专题专栏都帮你整理好了,请点击这里!] [1-系统架构演进过程] [2-微服务系统架构需求] [3-高性能.高并发.高可用的三高商城系统项目介绍] [4-Linux云 ...

  3. 阿里云OSS服务使用操作流程

    阿里云OSS服务使用操作流程 阿里云OSS服务使用操作流程 OSS服务简介 OSS官方帮助文档 服务开通激活 1.进入官网注册 2.选择OSS产品 3.激活服务 4.激活后进入管理控制台 快速使用 1 ...

  4. 阿里云OSS服务端签名前端JS直传(php)示例

    阿里云OSS服务端签名后前端JS直传(php)示例 需求:服务端上传图片太慢,需要使用前端直传的方式.但前端把阿里云的 AccessKey ID 和 AccessKey Secret 放在前端文件中会 ...

  5. 集成阿里云OSS编写AliyunOSSUtil

    集成阿里云OSS编写AliyunOSSUtil 文章目录 集成阿里云OSS编写AliyunOSSUtil 1.引入sdk依赖 2.添加yml配置文件 3.编写 AliyunOSSUtil文件 3.1 ...

  6. 使用阿里云OSS服务搭建私人图床

    阿里云OSS服务搭建私人图床 由于Gitee搭建图床的不确定性,笔者开始使用云服务提供商的对象存储服务搭建私人图床.相比于免费的Gitee,一年平均10元的花费也不算贵,并且得到了更为优秀的体验,有兴 ...

  7. 物联网架构成长之路(18)-接阿里云OSS服务

    1.申请/购买OSS服务 在阿里云上申请/购买OSS服务, 然后在会得AccessKeyID,AccessKeySecret,bucketName 这三个东西 2.增删改查 在pom.xml文件上增加 ...

  8. SpringBoot集成阿里云OSS上传文件

    文章目录 前言 一.准备环境 1.在搜索框搜索 对象存储OSS 2.创建Bucket 3.找到开发相关信息 二.具体代码 1.Maven依赖 2.application.yml配置 3.AliOssP ...

  9. SringBoot集成阿里云OSS上传文件

    上一篇文章讲了如何将文件从linux同步到阿里云的oss有兴趣的小伙伴可以去看看,这篇文章讲述如何将文件上传到阿里云oss上,本文只详细写出后端java代码示例,前端和无用代码都会省略,可以上传文件, ...

最新文章

  1. 开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势
  2. python面向对象基础
  3. 【原】SQL 取当前年 (年初 1月1号) 当前月 (月初 1号) 当前日 (零点)
  4. how can you understand the world
  5. 教你前端input框只允许输入正整数
  6. OpenCV Error: Unsupported format or combination of formats (Unsupported combination of input and out
  7. 不能说的秘密-重载、重写与继承中的构造方法
  8. python教程视频ajax_Ajax教程
  9. 武汉理工大学刷课,刷在线作业程序,做作业脚本
  10. vmware卸载不干净,重装不了问题;装了虚拟机上不了网问题;装了虚拟机发现windows在cmd中ping不了虚拟机,虚拟机能ping的了windows;secureCRT或者filezilla连接
  11. Android语言切换原理
  12. xlsxwriter模块安装linux,XlsxWriter模块常用方法
  13. AIX补丁中TL、SP、CSP、IF、PTF的含义
  14. html音频禁止自动播放,HTML iframe允许音频文件的自动播放无法正常使用
  15. Android 模块化开发
  16. 下载json文件,解决浏览器对JSON文件链接直接打开问题
  17. 获取手机指纹库指纹信息
  18. 快速原型设计工具(Axure)的简单使用
  19. 无法启动计算机丢失s7EPAAPI,200smart编程软件无法启动提示s7epaapi.dll丢失。-工业支持中心-西门子中国...
  20. window设置minio自启动时候*报错某些服务未由其他服务使用时将自动停止

热门文章

  1. 阿里云被攻击封多久?
  2. python2 assert判断字典的包含关系
  3. 《疯狂Android讲义》第二版目录
  4. 成功路上并不拥挤 因为坚持的人不多
  5. Windows 10 自动创建direct热点,正常WiFi热点无法开启
  6. 基于C语言的JPEG编码代码详解
  7. 读书|林曦:她把自己的生活,过成了无用但丰盈的美学
  8. 阿里云ECS服务器配置全攻略
  9. Unity 相机的移动旋转以及拉近拉远的原理
  10. 受益匪浅!Spring事务是如何传播的附架构师必备技术详解