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() { // @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() { // @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 task = oss.asyncPutObject(put, new OSSCompletedCallback() { // @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 list, String objectName, IOssCallBack callBack) { // if (oss == null) { // return; // } // List 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() { // @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() { // @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(); // } // }); // // } // }