热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android阿里云OSS文件上传的实现示例

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

估计有小伙伴看到阿里云oss的api文档十脸懵逼了,啊哈哈哈,接下来博主就来拯救你了,看完觉得好的就关注博主吧,么么么么么哒!!!

想要自己研究阿里云oss的,博主开启传送门给你:阿里云oss

一、项目导入阿里云oss的SDK

方式1:在build文件添加依赖(博主和官方一致推荐)

dependencies {
	 //阿里云oss
  implementation 'com.aliyun.dpa:oss-android-sdk:+'
}

方式2:源码编译jar包 源码传送门:官方阿里云oss源码


二、OSS所需要的Android权限






三、在项目的proguard-rules.pro文件加入混淆配置

-keep class com.alibaba.sdk.android.oss.** { *; }
-dontwarn okio.**
-dontwarn org.apache.commons.codec.binary.**

四、重点来了,上代码(只有上传和删除文件的,需要其他的功能就需要自己去研究了)

import android.content.Context;
import android.util.Log;

import com.alibaba.sdk.android.oss.ClientConfiguration;
import com.alibaba.sdk.android.oss.ClientException;
import com.alibaba.sdk.android.oss.OSS;
import com.alibaba.sdk.android.oss.OSSClient;
import com.alibaba.sdk.android.oss.ServiceException;
import com.alibaba.sdk.android.oss.callback.OSSCompletedCallback;
import com.alibaba.sdk.android.oss.callback.OSSProgressCallback;
import com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider;
import com.alibaba.sdk.android.oss.common.auth.OSSStsTokenCredentialProvider;
import com.alibaba.sdk.android.oss.internal.OSSAsyncTask;
import com.alibaba.sdk.android.oss.model.DeleteObjectRequest;
import com.alibaba.sdk.android.oss.model.DeleteObjectResult;
import com.alibaba.sdk.android.oss.model.PutObjectRequest;
import com.alibaba.sdk.android.oss.model.PutObjectResult;

public class AliyunUploadFile {
  private AliyunUploadView aliyunUploadView;
  private OSSCredentialProvider credentialProvider;
  private ClientConfiguration conf;
  private OSS oss;

  public AliyunUploadFile(AliyunUploadView aliyunUploadView) {
    this.aliyunUploadView = aliyunUploadView;
  }

/**
   *
   * @param context 上下文
   * @param AccessKeyId 存取键 一般找你们后端拿
   * @param SecretKeyId 密钥 一般找你们后端拿
   * @param SecurityToken 安全符记 一般找你们后端拿
   * @param endpoint 端点 一般找你们后端拿
   * @param bucketName 桶名 一般找你们后端拿
   * @param objectName 文件名
   * @param uploadFilePath 文件路径
   */
  public void UploadFile(Context context, String AccessKeyId, String SecretKeyId, String SecurityToken
      , String endpoint, String bucketName, String objectName, String uploadFilePath) {

    credentialProvider = new OSSStsTokenCredentialProvider(AccessKeyId, SecretKeyId, SecurityToken);
    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(context, endpoint, credentialProvider, conf);

    // 构造上传请求。
    PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, uploadFilePath);

    // 异步上传时可以设置进度回调。
    putObjectRequest.setProgressCallback(new OSSProgressCallback() {
      @Override
      public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {

      }
    });

    OSSAsyncTask ossAsyncTask = oss.asyncPutObject(putObjectRequest, new OSSCompletedCallback() {
      @Override
      public void onSuccess(PutObjectRequest request, PutObjectResult result) {
        aliyunUploadView.UploadSuccess(oss.presignPublicObjectURL(bucketName,objectName));
      }

      @Override
      public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // 请求异常。
        if (clientExcepion != null) {
          // 本地异常,如网络异常等。
          clientExcepion.printStackTrace();
          Log.e("123",clientExcepion+"");
          aliyunUploadView.Uploaddefeated("网络异常");
        }

        if (serviceException != null) {
          // 服务异常。
          Log.e("123",serviceException+"");
          aliyunUploadView.Uploaddefeated("服务异常");
        }
      }
    });

    // ossAsyncTask.cancel(); // 可以取消任务
    // ossAsyncTask.waitUntilFinished(); // 等待任务完成
  }

  public void DeleteFile(Context context, String AccessKeyId, String SecretKeyId, String SecurityToken
      , String endpoint, String bucketName, String objectName) {

    credentialProvider = new OSSStsTokenCredentialProvider(AccessKeyId, SecretKeyId, SecurityToken);
    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(context, endpoint, credentialProvider, conf);

    // 创建删除请求。
    DeleteObjectRequest delete = new DeleteObjectRequest(bucketName, objectName);
    // 异步删除。
    OSSAsyncTask deleteTask = oss.asyncDeleteObject(delete, new OSSCompletedCallback() {
      @Override
      public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {

      }

      @Override
      public void onFailure(DeleteObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
        // 请求异常。
        if (clientExcepion != null) {
          // 本地异常,如网络异常等。
          clientExcepion.printStackTrace();

        }
        if (serviceException != null) {
          // 服务异常。

        }
      }
    });

    // deleteTask.cancel(); // 可以取消任务
    // deleteTask.waitUntilFinished(); // 等待任务完成
  }
  
	public interface AliyunUploadView {
  	void UploadSuccess(String url);

  	void Uploaddefeated(String error);
	}
}

到此这篇关于Android 阿里云OSS文件上传的实现示例的文章就介绍到这了,更多相关Android 阿里云OSS文件上传内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 信息安全等级保护是指对国家秘密信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
author-avatar
红太郎的等待_921
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有