写了个简单的阿里云Oss上传,封装成一个类,可以直接使用

首先在您的gradle中配置sdk:

dependencies {compile 'com.aliyun.dpa:oss-android-sdk:+'
}

然后确保您的 AndroidManifest.xml 文件中已经配置了这些权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

将OssService这个类复制到项目中,导入需要的包,日志包根据您项目自己更改。

public class OssService {private OSS oss;private String accessKeyId;private String bucketName;private String accessKeySecret;private String endpoint;private Context context;private ProgressCallback progressCallback;public OssService(Context context, String accessKeyId, String accessKeySecret, String endpoint, String bucketName) {this.context = context;this.endpoint = endpoint;this.bucketName = bucketName;this.accessKeyId = accessKeyId;this.accessKeySecret = accessKeySecret;}public void initOSSClient() {//OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider("<StsToken.AccessKeyId>", "<StsToken.SecretKeyId>", "<StsToken.SecurityToken>");//这个初始化安全性没有Sts安全,如需要很高安全性建议用OSSStsTokenCredentialProvider创建(上一行创建方式)多出的参数SecurityToken为临时授权参数OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);ClientConfiguration conf = new ClientConfiguration();conf.setConnectionTimeout(15 * 1000); // 连接超时,默认15秒conf.setSocketTimeout(15 * 1000); // socket超时,默认15秒conf.setMaxConcurrentRequest(8); // 最大并发请求数,默认5个conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次// oss为全局变量,endpoint是一个OSS区域地址oss = new OSSClient(context, endpoint, credentialProvider, conf);}public void beginupload(Context context, String filename, String path) {//通过填写文件名形成objectname,通过这个名字指定上传和下载的文件String objectname = filename;if (objectname == null || objectname.equals("")) {ToastUtils.showShort("文件名不能为空");return;}//下面3个参数依次为bucket名,Object名,上传文件路径PutObjectRequest put = new PutObjectRequest(bucketName, objectname, path);if (path == null || path.equals("")) {LogUtil.d("请选择图片....");//ToastUtils.showShort("请选择图片....");return;}LogUtil.d("正在上传中....");//ToastUtils.showShort("正在上传中....");// 异步上传,可以设置进度回调put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {@Overridepublic void onProgress(PutObjectRequest request, long currentSize, long totalSize) {LogUtil.d("currentSize: " + currentSize + " totalSize: " + totalSize);double progress = currentSize * 1.0 / totalSize * 100.f;if (progressCallback != null) {progressCallback.onProgressCallback(progress);}}});@SuppressWarnings("rawtypes")OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {@Overridepublic void onSuccess(PutObjectRequest request, PutObjectResult result) {LogUtil.d("UploadSuccess");//ToastUtils.showShort("上传成功");}@Overridepublic void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {// 请求异常LogUtil.d("UploadFailure");ToastUtils.showShort("UploadFailure");if (clientExcepion != null) {// 本地异常如网络异常等LogUtil.e("UploadFailure:表示向OSS发送请求或解析来自OSS的响应时发生错误。\n" +"  *例如,当网络不可用时,这个异常将被抛出");clientExcepion.printStackTrace();}if (serviceException != null) {// 服务异常LogUtil.e("UploadFailure:表示在OSS服务端发生错误");LogUtil.e("ErrorCode", serviceException.getErrorCode());LogUtil.e("RequestId", serviceException.getRequestId());LogUtil.e("HostId", serviceException.getHostId());LogUtil.e("RawMessage", serviceException.getRawMessage());}}});//task.cancel(); // 可以取消任务//task.waitUntilFinished(); // 可以等待直到任务完成}public ProgressCallback getProgressCallback() {return progressCallback;}public void setProgressCallback(ProgressCallback progressCallback) {this.progressCallback = progressCallback;}public interface ProgressCallback {void onProgressCallback(double progress);}}

最后在您的Activity中如下调用

//初始化OssService类,参数分别是Content,accessKeyId,accessKeySecret,endpoint,bucketName(后4个参数是您自己阿里云Oss中参数)
OssService ossService = new OssService(mApplication.app(), accessKeyId, accessKeySecret, endpoint, bucketName);
//初始化OSSClient
ossService.initOSSClient();
//开始上传,参数分别为content,上传的文件名filename,上传的文件路径filePath
ossService.beginupload(content, filename, filePath);
//上传的进度回调
ossService.setProgressCallback(new OssService.ProgressCallback() {@Overridepublic void onProgressCallback(final double progress) {LogUtil.d("上传进度:"+progress);runOnUiThread(new Runnable() {@Overridepublic void run() {}});          }

为了向别人、向世界证明自己而努力拼搏,而一旦你真的取得了成绩,才会明白:人无须向别人证明什么,只要你能超越自己。

阿里云Oss上传(Android版)相关推荐

  1. Nginx 代理转发阿里云OSS上传的实现代码

    这篇文章主要介绍了Nginx 代理转发阿里云OSS上传的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 前言 因为小程序上传需要https,服务器https用的是 ...

  2. SpringBoot整合阿里云OSS上传文件

    一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...

  3. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

  4. 阿里云OSS上传文件设置请求头

    之前写过一篇发送文件消息的,原生input上传文件(聊天发送文件消息),这次的需求就是更改上传地址,使用阿里云OSS上传. 如果想了解阿里云对象存储OSS是如何使用的,请看阿里云存储对象OSS使用讲解 ...

  5. springboot整合阿里云oss上传的方法示例

    这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...

  6. spring boot 整合 阿里云oss上传

    Spring Boot 整合 阿里云OSS上传 OSS申请和配置 1. 注册登录 2.开通以及配置 springboot整合使用 1. 进入我们springboot的项目中,导入oss相关依赖 2. ...

  7. 阿里云oss上传svg等格式的文件,返回的路径打开后是下载而不是预览

    在做的一个项目,阿里云oss上传svg等格式的文件,返回的路径打开后是下载而不是预览.之后web同事跟产品说不好处理,换回了使用jpg格式的文件.但是最终这个问题都是要解决的,产品要求下期也要上传sv ...

  8. 阿里云OSS上传请求403问题的完美解决方案及uni.uploadFile h5上传文件失败完美解决方案

    在使用阿里云OSS服务时,会用到跨域AJAX上传,上传时报403错误,之前遇到过此类问题并成功解决了,但时间长了遗忘,因此记录下来以备后续学习了解ajax跨域上传OSS. ajax跨域上传首先会发送o ...

  9. 阿里云OSS上传文件时,如何显示上传网速

    阿里云OSS上传文件时,如何显示上传网速 业务场景 用户上传时,网速很慢,或者在上传大文件时,虽然有进度条,但是动的很慢,或者不明显,用户会产生困惑. 所以就产生了一个显示网速的需求点. 实现方式 E ...

最新文章

  1. 虚拟机中RedHat Linux系统安装
  2. 【博客】csdn搬家到wordpress
  3. 安卓手机小说阅读器_乐小说阅读器下载手机版-乐小说阅读器app下载安装
  4. vc中如何将一个工程的资源复制到另外一个工程?
  5. 一周总结汇总_2016-09-18
  6. linux关于管道通信,球热心人帮忙 关于linux环境下管道通信
  7. Keras 多层感知机 多类别的 softmax 分类模型代码
  8. 传智播客 C/C++学习笔记 一级指针易错模型分析_重点
  9. 数据库:园林软件(综合类题库)
  10. EP100底层封装-LibCreateSourceFile()函数
  11. chrome出现Provisional headers are shown
  12. Laravel——微信授权登陆
  13. 物理单位与格子单位转换
  14. 三国志战略版鸿蒙梦魇,三国志战略版梦中弑臣厉害吗 梦中弑臣战法搭配
  15. CSDN博客QQ加群、微信
  16. 微软2017年预科生计划在线编程笔试第二场-#1498 : Diligent Robots
  17. 举头皮皮虾机器人_一种仿生水下皮皮虾机器人通信系统的制作方法
  18. NPOI编辑WORD文档
  19. 超详细Redis入门教程——Redis概述
  20. (转载)Nim游戏博弈(收集完全版)

热门文章

  1. Ubuntu 使用pipy 镜像
  2. 【基因图谱(react 版本)】
  3. 关押罪犯 - C++
  4. 1405 mysql 2800_【未解决】MySql安装出现ERROR 1405(28000)
  5. gitkraken汉化
  6. TCP三次握手,如果一、二、三次握手丢失各会发生什么
  7. html增加锚点,html增加锚点定位
  8. Error mounting /dev/sda2 at /media/mk90/F: Command-line `mount -t ntfs -o
  9. 水的问题之half类型
  10. 群表示论之frobenius互反律和诱导特征标