电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Android實現阿里云oss上傳流程解析

瀏覽:6日期:2022-09-22 15:12:41

購買了阿里云的oss空間,于是用它來存儲圖片,不過中間的使用算是出了些問題,導致很長的才成功。

不得不說,阿里云文檔真的是無力吐槽。。。亂七八糟的。我完全是東拼西湊,才完成的圖片上傳功能。

走了很多的彎路,今天來記錄下。

服務器上傳:

阿里云上傳分服務器上傳和客戶端上傳,首先要分清,因為兩邊有差別的,服務器的上傳簡單很多,官方給的下載下來,輸入配置的參數accessKeyId 和accessKeySecret 還有bucketName 就能夠上傳成功,很簡單,這里也就不細說了。

客戶端上傳:

這里著重來講下客戶端上傳,因為它更加的麻煩 和繁瑣一些。

教程的全篇都會講一句話,移動端是不受信任的環境,我的個人理解是,apk是個比較好被反編譯的,所有,如果將很多秘鑰寫到APP中,就會存在泄露的問題。所以,像上面服務器上傳那樣,直接在代碼里面寫accessKeyId 和accessKeySecret,肯定是不安全的。所以,客戶端上傳,有兩個東西子知識點要去了解。

Android實現阿里云oss上傳流程解析

1.訪問用戶RAM管理

這里需要進行用戶的分配,分配一個專門操作阿里云 OSS的用戶,并給予該用戶應有的權限。

2.STS鑒權模式

Android實現阿里云oss上傳流程解析

OSS可以通過阿里云STS服務,臨時進行授權訪問。阿里云STS (Security Token Service) 是為云計算用戶提供臨時訪問令牌的Web服務。通過STS,您可以為第三方應用或聯邦用戶(用戶身份由您自己管理)頒發一個自定義時效和權限的訪問憑證

我的理解就是:用分配的用戶的秘鑰去操作單個步驟,實現權限的分配管理。

開始準備工作

1:用戶RAM管理

創建RAM:步驟參考文檔。就是到《訪問控制RAM》去設置子用戶,并分配給子用戶權限。

https://ram.console.aliyun.com/?spm=5176.2020520153.aliyun_sidebar.11.7f5a43f7vo9spw&accounttraceid=dfef632a-67d6-4f51-a3ff-beea37b5db73#/overview

2.進入對象儲存的控制臺,創建對應的AK。

對象儲存 - 安全令牌-安全令牌快捷配置 - 開始授權,

授權成功后,會出來一系列參數AccessKeyID 和AccessKeySecret 和RoleArn ,這些比較重要,需要在請求中用于授權,不要泄露。

3.準備STS服務器,用于請求阿里云OSS 分發出Token,然后客戶端通過token進行訪問和上傳下載。

去阿里云上下載一個sts-server作為服務器端,專門用來分發token,這個直接去阿里云下載代碼,部署到服務器上運行就行。

返回的一個json數據,里面包含了SecurityToken.

Android實現阿里云oss上傳流程解析

4.開始編寫客戶端的代碼

首先加入依賴包

implementation ’com.aliyun.dpa:oss-android-sdk:+’implementation ’com.squareup.okhttp3:okhttp:3.4.1’implementation ’com.squareup.okio:okio:1.9.0’

 加入權限設置:

<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' /><uses-permission android:name='android.permission.MOUNT_UNMOUNT_FILESYSTEMS' />

加入混淆設置;注意,這里是重點,一定要加入,不然會出各種奇怪的問題。

Android實現阿里云oss上傳流程解析

加入到文件proguard-rules.pro中

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

初始化對象OSSCLIENT

String endpoint = 'http://oss-cn-shenzhen.aliyuncs.com'; String stsServer = '../sts-server/sts-server/sts.php'; String callbackAddress = 'http://oss-demo.aliyuncs.com:23450';//推薦使用OSSAuthCredentialsProvider。token過期可以及時更新 OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer);//該配置類如果不設置,會有默認配置,具體可看該類 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(getApplicationContext(), endpoint, credentialProvider,conf);

上傳圖片代碼:

{// 構造上傳請求 PutObjectRequest put = new PutObjectRequest('hzltest1', '333333333333333333333333', FilePath);//PutObjectRequest put = new PutObjectRequest('<bucketName>', '<objectKey>', '<uploadFilePath>');

// 異步上傳時可以設置進度回調 put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() { @Override public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {Log.d('PutObject', 'currentSize: ' + currentSize + ' totalSize: ' + totalSize); } }); OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() { @Override public void onSuccess(PutObjectRequest request, PutObjectResult result) {Log.d('PutObject', 'UploadSuccess');Log.d('ETag', result.getETag());Log.d('RequestId', result.getRequestId()); } @Override public 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());} } }); }

到底,文件能夠上傳成功就是OK的。

這里上傳的代碼還是比較簡單的,主要難在配置,和阿里云本身的文檔寫的很分散,東一塊西一塊,你需要首先了解很多技術才能很快的上手,否則,對于一個剛購買OSS的人來說,用起來著實是麻煩。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 浙江美尔凯特智能厨卫股份有限公司 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 楼梯定制_楼梯设计施工厂家_楼梯扶手安装制作-北京凌步楼梯 | 品牌广告服务平台,好排名,好流量,好生意。 | 能量回馈_制动单元_电梯节能_能耗制动_深圳市合兴加能科技有限公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 汽液过滤网厂家_安平县银锐丝网有限公司| 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 磷酸肌酸二钠盐,肌酐磷酰氯-沾化欣瑞康生物科技 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | [官网]叛逆孩子管教_戒网瘾学校_全封闭问题青少年素质教育_新起点青少年特训学校 | 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | 塑钢课桌椅、学生课桌椅、课桌椅厂家-学仕教育设备首页 | 找培训机构_找学习课程_励普教育 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 耙式干燥机_真空耙式干燥机厂家-无锡鹏茂化工装备有限公司 | 领袖户外_深度旅游、摄影旅游、小团慢旅行、驴友网 | 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 新能源汽车教学设备厂家报价[汽车教学设备运营18年]-恒信教具 | 工业用品一站式采购平台|南创工品汇-官网|广州南创 | 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 陕西安玻璃自动感应门-自动重叠门-磁悬浮平开门厂家【捷申达门业】 | 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 |