package com.example.smart.oss;
|
|
|
import static com.example.smart.oss.OssConfig.BUCKET_NAME;
|
import static com.example.smart.oss.OssConfig.OSS_DAILY_SIGN;
|
import static com.example.smart.oss.OssConfig.OSS_STS_API;
|
|
import android.app.Application;
|
import android.graphics.Bitmap;
|
import android.graphics.BitmapFactory;
|
import android.net.Uri;
|
import android.util.Log;
|
|
import androidx.annotation.NonNull;
|
|
import com.alibaba.sdk.android.oss.ClientConfiguration;
|
import com.alibaba.sdk.android.oss.ClientException;
|
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.OSSAuthCredentialsProvider;
|
import com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider;
|
import com.alibaba.sdk.android.oss.common.auth.OSSFederationCredentialProvider;
|
import com.alibaba.sdk.android.oss.common.auth.OSSFederationToken;
|
import com.alibaba.sdk.android.oss.common.auth.OSSStsTokenCredentialProvider;
|
import com.alibaba.sdk.android.oss.internal.OSSAsyncTask;
|
import com.alibaba.sdk.android.oss.model.GetObjectRequest;
|
import com.alibaba.sdk.android.oss.model.GetObjectResult;
|
import com.alibaba.sdk.android.oss.model.OSSRequest;
|
import com.alibaba.sdk.android.oss.model.OSSResult;
|
import com.alibaba.sdk.android.oss.model.PutObjectRequest;
|
import com.alibaba.sdk.android.oss.model.PutObjectResult;
|
import com.example.basecore.util.DateUtils;
|
import com.example.smart.util.StatusProvider;
|
|
import java.io.ByteArrayOutputStream;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.HashMap;
|
import java.util.List;
|
|
public class OssService {
|
|
public static OSSClient oss;
|
|
public static void create(Application application) {
|
String endpoint = OssConfig.OSS_ENDPOINT;
|
|
OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(OSS_STS_API);
|
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(application, endpoint, credentialProvider, conf);
|
}
|
|
|
public static void create(String id, String key, String token, Application application) {
|
String endpoint = OssConfig.OSS_ENDPOINT;
|
|
OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(id, key, token);
|
|
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(application, endpoint, credentialProvider, conf);
|
}
|
|
|
private static String generateDailyPath() {
|
String date = DateUtils.getCurDate();
|
return OSS_DAILY_SIGN + date + "/";
|
}
|
|
//
|
// public static void asyncPutImage(String localFile, IOssCallBack callBack) {
|
// if (oss == null) {
|
// return;
|
// }
|
// File file = new File(localFile);
|
// if (!file.exists()) {
|
// Log.w("AsyncPutImage", "FileNotExist");
|
// Log.w("LocalFile", localFile);
|
// return;
|
// }
|
//
|
// String name = StatusProvider.INSTANCE.getUid() + "_" + System.currentTimeMillis() + "_" + file.getName();
|
// String objectName = generateDailyPath() + name;
|
// Log.w("objectName", objectName);
|
//
|
// // 构造上传请求
|
// PutObjectRequest put = new PutObjectRequest(BUCKET_NAME, objectName, localFile);
|
// put.setCRC64(OSSRequest.CRC64Config.YES);
|
//
|
//
|
// // 异步上传时可以设置进度回调
|
// put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
|
// @Override
|
// public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
|
//// int progress = (int) (100 * currentSize / totalSize);
|
//// Log.d("put", "progress = " + progress);
|
// }
|
// });
|
//
|
// 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());
|
//
|
// callBack.onSuccess(objectName);
|
//
|
// }
|
//
|
// @Override
|
// public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
|
// String info = "";
|
// // 请求异常
|
// if (clientExcepion != null) {
|
// // 本地异常如网络异常等
|
// clientExcepion.printStackTrace();
|
// info = clientExcepion.toString();
|
// }
|
// if (serviceException != null) {
|
// // 服务异常
|
// Log.e("ErrorCode", serviceException.getErrorCode());
|
// Log.e("RequestId", serviceException.getRequestId());
|
// Log.e("HostId", serviceException.getHostId());
|
// Log.e("RawMessage", serviceException.getRawMessage());
|
// info = serviceException.toString();
|
// }
|
// callBack.onFailed();
|
// }
|
// });
|
// }
|
//
|
//
|
// public static void asyncPutImage(String localFile, String objectName, IOssCallBack callBack) {
|
// if (oss == null) {
|
// return;
|
// }
|
// File file = new File(localFile);
|
// if (!file.exists()) {
|
// Log.w("AsyncPutImage", "FileNotExist");
|
// Log.w("LocalFile", localFile);
|
// return;
|
// }
|
//
|
// String name = StatusProvider.INSTANCE.getUid() + "_" + System.currentTimeMillis() + "_" + file.getName();
|
// objectName += name;
|
// Log.w("objectName", objectName);
|
//
|
// // 构造上传请求
|
// PutObjectRequest put = new PutObjectRequest(BUCKET_NAME, objectName, localFile);
|
// put.setCRC64(OSSRequest.CRC64Config.YES);
|
//
|
//
|
// String finalObjectName = objectName;
|
//
|
// OSSAsyncTask<PutObjectResult> task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
|
// @Override
|
// public void onSuccess(PutObjectRequest request, PutObjectResult result) {
|
// callBack.onSuccess(finalObjectName);
|
// }
|
//
|
// @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());
|
// }
|
//
|
// callBack.onFailed();
|
// }
|
// });
|
// }
|
//
|
//
|
// /**
|
// * 多文件上传
|
// */
|
// public static void asyncPutImageList(List<String> list, String objectName, IOssCallBack callBack) {
|
// if (oss == null) {
|
// return;
|
// }
|
// List<String> ossResultList = Collections.synchronizedList(new ArrayList<>());
|
//
|
// for (String str : list) {
|
// asyncPutImage(str, objectName, new IOssCallBack() {
|
// @Override
|
// public void onSuccess(@NonNull String ossPath) {
|
// ossResultList.add(ossPath);
|
// callBack.onSuccess(ossPath);
|
// if (ossResultList.size() == list.size()) {
|
// callBack.onAllListSuccess(ossResultList);
|
// }
|
// }
|
//
|
// @Override
|
// public void onFailed() {
|
// callBack.onFailed();
|
// ossResultList.add("");
|
// if (ossResultList.size() == list.size()) {
|
// callBack.onAllListSuccess(ossResultList);
|
// }
|
// }
|
// });
|
// }
|
// }
|
//
|
//
|
// public static void asyncPutImageByUri(Uri uri, String objectName, IOssCallBack callBack) {
|
// if (oss == null) {
|
// return;
|
// }
|
//
|
// String name = StatusProvider.INSTANCE.getUid() + "_" + System.currentTimeMillis() + "_" + "img.jpg";
|
// objectName += name;
|
//
|
// // 构造上传请求
|
// PutObjectRequest put = new PutObjectRequest(BUCKET_NAME, objectName, uri);
|
// put.setCRC64(OSSRequest.CRC64Config.YES);
|
//
|
// String finalObjectName = objectName;
|
// oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
|
// @Override
|
// public void onSuccess(PutObjectRequest request, PutObjectResult result) {
|
// callBack.onSuccess(finalObjectName);
|
// }
|
//
|
// @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());
|
// }
|
//
|
// callBack.onFailed();
|
// }
|
// });
|
// }
|
//
|
// public static void getFile(String objectName, IOssGetCallback callBack) {
|
// if (oss == null) {
|
// return;
|
// }
|
// //"sign/daily/2023-09-20/_1695181081925_IMG_20230829_181457.jpg"
|
// GetObjectRequest request = new GetObjectRequest(OssConfig.BUCKET_NAME, objectName);
|
//
|
// oss.asyncGetObject(request, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
|
// @Override
|
// public void onSuccess(GetObjectRequest request, GetObjectResult result) {
|
//
|
// InputStream inputStream = result.getObjectContent();
|
// Bitmap bm = BitmapFactory.decodeStream(inputStream);
|
// callBack.onSuccess(bm);
|
//
|
// }
|
//
|
// @Override
|
// public void onFailure(GetObjectRequest request, ClientException clientException, ServiceException serviceException) {
|
// callBack.onFailed();
|
// }
|
// });
|
//
|
// }
|
//
|
|
}
|