使用第三方組件進行Minio文件上傳-Android
https://blog.csdn.net/u013243573/article/details/79039351
https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-s3
https://github.com/aws-amplify/aws-sdk-android
https://blog.csdn.net/xu912996973/article/details/115073380
minio本身提供的sdk支持的是java,在Java中能正常使用,但是在Android中就會異常,貌似有大神可以自己改依賴,甚至改源碼,我這邊使用的是
aws-android-sdk
,很幸運的是第一次嘗試就成功了,而且文件上傳的時候可以實時展示進度.
使用第三方aws-android-sdk
上傳
- 依賴
// https://mvnrepository.com/artifact/com.amazonaws/aws-android-sdk-s3
implementation group: 'com.amazonaws', name: 'aws-android-sdk-s3', version: '2.22.5'
// https://mvnrepository.com/artifact/com.amazonaws/aws-android-sdk-mobile-client
implementation group: 'com.amazonaws', name: 'aws-android-sdk-mobile-client', version: '2.22.5'
- service配置
<service android:name="com.amazonaws.mobileconnectors.s3.transferutility.TransferService" android:enabled="true" />
文件上傳
AmazonS3 s3 = new AmazonS3Client(new AWSCredentials() {
@Override
public String getAWSAccessKeyId() {
return NetBaseConfig.MINIO_KEY;//minio的key
}
@Override
public String getAWSSecretKey() {
return NetBaseConfig.MINIO_SECRET;//minio的密鑰
}
}, Region.getRegion(Regions.CN_NORTH_1),new ClientConfiguration());
//服務器地址
s3.setEndpoint(NetBaseConfig.MINIO_ENDPOINT);//http://ip:端口號
File file = new File(filePath);//filePath是文件在Android中的地址
//(桶名,fileName文件在桶中存放地址,文件file)
s3.putObject(new PutObjectRequest(MINIO_BUCKET_NAME,fileName,file).withGeneralProgressListener(new ProgressListener(){
int readedbyte = 0;
@Override
public void progressChanged(ProgressEvent progressEvent) {
readedbyte += progressEvent.getBytesTransferred();
Log.d(TAG, "progressChanged: "+fileName+"文件上傳進度:"+((float)(readedbyte / (float)file.length())*100 )+"%");
// System.out.println("=========progress=================" + + "============URL=============");
}
}));
//獲取文件上傳后訪問地址url:(http://xxx/地址?密鑰)
// GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(MINIO_BUCKET_NAME, fileName);
// URL url = s3.generatePresignedUrl(urlRequest);
// System.out.println("=========URL=================" + url.toString() + "============URL=============");