android客户端直传文件到阿里云OSS服务器详细流程代码

2024-05-08 22:18

本文主要是介绍android客户端直传文件到阿里云OSS服务器详细流程代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

1.阿里云官方文档

https://help.aliyun.com/document_detail/31920.html?spm=a2c4g.11186623.2.12.2a1cbdce9IWQFh#title-zp8-uz7-br6  

 

2.拼接后的地址

   http://image.chongdm.com/zhaozhuang/20200924/1600931173684.png

3.后台返回的数据格式必须解析如下:

接口:http://api.chongdm.com/gateway/oss/getOssToken
//正确返回
{"StatusCode":200,"AccessKeyId":"STS.3p***dgagdasdg","AccessKeySecret":"rpnwO9***tGdrddgsR2YrTtI","SecurityToken":"CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Oc5s˙∂˙∂3qaPer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVtbzI=","Expiration":"2017-12-12T07:49:09Z",
}
//错误返回
{"StatusCode":500,"ErrorCode":"InvalidAccessKeyId.NotFound","ErrorMessage":"Specified access key is not found."
}

 3.app端上传文件路径,需要自己拼接

private var stsServer: String = "http://api.chongdm.com/gateway/oss/getOssToken"   
private  var oss: OSS? = nullfun initOSS() {        val credentialProvider: OSSCredentialProvidercredentialProvider = OSSAuthCredentialsProvider(stsServer)val conf = ClientConfiguration()conf.connectionTimeout = 15 * 1000 // 连接超时,默认15秒conf.socketTimeout = 15 * 1000 // socket超时,默认15秒conf.maxConcurrentRequest = 5 // 最大并发请求书,默认5个conf.maxErrorRetry = 2 // 失败后最大重试次数,默认2次oss = OSSClient(applicationContext, endpoint, credentialProvider, conf)}
fun postToOss(path: String) {val OssPath = "zhaozhuang/" + DateUtils.getCurrentDataDefaultString()+"/"+TimeUtils.getNowMills()+".png"// 构造上传请求。val put =PutObjectRequest(bucketName, OssPath, path)// 异步上传时可以设置进度回调。put.progressCallback = OSSProgressCallback { request, currentSize, totalSize ->Log.d("PutObject","currentSize: $currentSize totalSize: $totalSize")}val task: OSSAsyncTask<*> = oss!!.asyncPutObject(put,object : OSSCompletedCallback<PutObjectRequest?, PutObjectResult> {override fun onSuccess(request: PutObjectRequest?,result: PutObjectResult) {Log.d("PutObject", "UploadSuccess")Log.d("ETag", result.eTag)Log.d("RequestId", result.toString())}override fun onFailure(request: PutObjectRequest?,clientExcepion: ClientException,serviceException: ServiceException) {// 请求异常。clientExcepion?.printStackTrace()if (serviceException != null) {// 服务异常。Log.e("ErrorCode", serviceException.errorCode)Log.e("RequestId", serviceException.requestId)Log.e("HostId", serviceException.hostId)Log.e("RawMessage", serviceException.rawMessage)}}})}

 

这篇关于android客户端直传文件到阿里云OSS服务器详细流程代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971592

相关文章

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

java导出pdf文件的详细实现方法

《java导出pdf文件的详细实现方法》:本文主要介绍java导出pdf文件的详细实现方法,包括制作模板、获取中文字体文件、实现后端服务以及前端发起请求并生成下载链接,需要的朋友可以参考下... 目录使用注意点包含内容1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接使

Java springBoot初步使用websocket的代码示例

《JavaspringBoot初步使用websocket的代码示例》:本文主要介绍JavaspringBoot初步使用websocket的相关资料,WebSocket是一种实现实时双向通信的协... 目录一、什么是websocket二、依赖坐标地址1.springBoot父级依赖2.springBoot依赖

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

什么是 Java 的 CyclicBarrier(代码示例)

《什么是Java的CyclicBarrier(代码示例)》CyclicBarrier是多线程协同的利器,适合需要多次同步的场景,本文通过代码示例讲解什么是Java的CyclicBarrier,感... 你的回答(口语化,面试场景)面试官:什么是 Java 的 CyclicBarrier?你:好的,我来举个例

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

Android WebView无法加载H5页面的常见问题和解决方法

《AndroidWebView无法加载H5页面的常见问题和解决方法》AndroidWebView是一种视图组件,使得Android应用能够显示网页内容,它基于Chromium,具备现代浏览器的许多功... 目录1. WebView 简介2. 常见问题3. 网络权限设置4. 启用 JavaScript5. D