午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

Android實現(xiàn)阿里云oss上傳流程解析

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

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

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

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

服務(wù)器上傳:

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

客戶端上傳:

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

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

Android實現(xiàn)阿里云oss上傳流程解析

1.訪問用戶RAM管理

這里需要進行用戶的分配,分配一個專門操作阿里云 OSS的用戶,并給予該用戶應(yīng)有的權(quán)限。

2.STS鑒權(quán)模式

Android實現(xiàn)阿里云oss上傳流程解析

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

我的理解就是:用分配的用戶的秘鑰去操作單個步驟,實現(xiàn)權(quán)限的分配管理。

開始準備工作

1:用戶RAM管理

創(chuàng)建RAM:步驟參考文檔。就是到《訪問控制RAM》去設(shè)置子用戶,并分配給子用戶權(quán)限。

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

2.進入對象儲存的控制臺,創(chuàng)建對應(yīng)的AK。

對象儲存 - 安全令牌-安全令牌快捷配置 - 開始授權(quán),

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

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

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

返回的一個json數(shù)據(jù),里面包含了SecurityToken.

Android實現(xiàn)阿里云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’

 加入權(quán)限設(shè)置:

<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' />

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

Android實現(xiàn)阿里云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);//該配置類如果不設(shè)置,會有默認配置,具體可看該類 ClientConfiguration conf = new ClientConfiguration(); conf.setConnectionTimeout(15 * 1000); // 連接超時,默認15秒 conf.setSocketTimeout(15 * 1000); // socket超時,默認15秒 conf.setMaxConcurrentRequest(5); // 最大并發(fā)請求數(shù),默認5個 conf.setMaxErrorRetry(2); // 失敗后最大重試次數(shù),默認2次 oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider,conf);

上傳圖片代碼:

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

// 異步上傳時可以設(shè)置進度回調(diào) 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) { // 本地異常如網(wǎng)絡(luò)異常等 clientExcepion.printStackTrace();}if (serviceException != null) { // 服務(wù)異常 Log.e('ErrorCode', serviceException.getErrorCode()); Log.e('RequestId', serviceException.getRequestId()); Log.e('HostId', serviceException.getHostId()); Log.e('RawMessage', serviceException.getRawMessage());} } }); }

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 免费成人高清在线视频 | 日韩精品一区二区三区中文在线 | 91看片儿| 成人欧美一区二区三区黑人免费 | 岛国av在线播放 | 黄网址在线 | www.爱爱| 久久丁香| 亚洲午夜18毛片在线看 | 欧美亚洲激情 | 欧美日韩中字 | 四虎影院一区二区 | 久久精品一 | www.av在线播放 | 91精品婷婷国产综合久久蝌蚪 | 亚洲第一av| 亚洲成人精品在线播放 | 深夜激情影院 | 精品欧美一区二区三区久久久 | 超碰一区二区三区 | 黄色一级网 | 白嫩白嫩国产精品 | 中文字幕在线观看日韩 | 黄网视频在线观看 | 午夜精品一区二区三区在线观看 | 99国产精品99久久久久久粉嫩 | 黄色a级片在线观看 | 欧美激情性做爰免费视频 | 国产在线导航 | 三级三级久久三级久久18 | 欧美激情三区 | 98视频在线| 成年免费视频黄网站在线观看 | 丁香婷婷在线 | 中文字幕 自拍偷拍 | 日韩三级av | 日韩毛片视频 | 在线观看免费黄视频 | 在线观看精品一区 | 福利资源在线 | 欧美日韩国产一级 |