修改名称。

This commit is contained in:
2025-11-07 09:22:39 +08:00
parent d9cf55b053
commit a8dcfbb6a7
2203 changed files with 3 additions and 4 deletions

View File

@@ -0,0 +1,312 @@
package com.xscm.moduleutil.utils.oss;
import com.alibaba.sdk.android.oss.ClientConfiguration;
import com.alibaba.sdk.android.oss.ClientException;
import com.alibaba.sdk.android.oss.OSS;
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.OSSLog;
import com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider;
import com.alibaba.sdk.android.oss.common.auth.OSSPlainTextAKSKCredentialProvider;
import com.alibaba.sdk.android.oss.internal.OSSAsyncTask;
import com.alibaba.sdk.android.oss.model.PutObjectRequest;
import com.alibaba.sdk.android.oss.model.PutObjectResult;
import com.blankj.utilcode.util.FileUtils;
import com.blankj.utilcode.util.ThreadUtils;
import com.xscm.moduleutil.base.CommonAppContext;
import com.xscm.moduleutil.utils.Md5Utils;
import com.xscm.moduleutil.utils.logger.Logger;
import java.io.File;
/**
* Created by zjh on 2016/2/22.
*/
public class OSSOperUtils {
private static OSS oss;
private static OSSOperUtils utils;
/**
* GetObjectRequest get = new GetObjectRequest("duia-log", name);
* <p>
* String endpoint = "https://oss-cn-beijing.aliyuncs.com";
* <p>
* // 明文设置secret的方式建议只在测试时使用更多鉴权模式请参考后面的`访问控制`章节
* OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider("qgR150FXSbdnCi5e", "wi4jUJvFgKZXkPp63vCY8nA849GpLT");
* <p>
* OSS
* Access Key ID: LTAIdLLZpWaeXb6j
* Access Key Secret: rBUwiyKNk8ddRaJMDYBucrTrxIidgr
* AliYunOSSURLFile: zholiao.oss-cn-shenzhen.aliyuncs.com
*/
// 运行sample前需要配置以下字段为有效的值
private static final String endpoint = CommonAppContext.getInstance().getCurrentEnvironment().getOssEndPoint();
private static final String accessKeyId = CommonAppContext.getInstance().getCurrentEnvironment().getOssaAcessKeyId();
private static final String accessKeySecret = CommonAppContext.getInstance().getCurrentEnvironment().getOssAccessKeySecret();
private static final String bucketName = CommonAppContext.getInstance().getCurrentEnvironment().getOssBucketName();
public static final String AliYunOSSURLFile = CommonAppContext.getInstance().getCurrentEnvironment().getOssBaseUrl();
public static final String img = "images/android_images/";
public static final String video = "video/";
public static final String audio = "audio/";
/**
* 文件
*
* @param file
* @param type 0 图片 1音频 2视频
* @return
*/
public static String getPath(File file, int type) {
String fileMD5 = Md5Utils.getFileMD5(file);
String suffix = "";
if (file.getName().contains(".")) {
suffix = file.getName().substring(file.getName().lastIndexOf("."));
}
// if (type == 0) {
return img + fileMD5 + suffix;
// } else if (type == 1) {
// return audio + fileMD5 + suffix;
// } else {
// return video + fileMD5 + suffix;
// }
}
public static OSSOperUtils newInstance() {
if (null == utils) {
utils = new OSSOperUtils();
}
if (null == oss) {
OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId, accessKeySecret);
ClientConfiguration conf = new ClientConfiguration();
conf.setConnectionTimeout(150 * 1000); // 连接超时默认15秒
conf.setSocketTimeout(150 * 1000); // socket超时默认15秒
conf.setMaxConcurrentRequest(5); // 最大并发请求书默认5个
conf.setMaxErrorRetry(2); // 失败后最大重试次数默认2次
OSSLog.enableLog();
oss = new OSSClient(CommonAppContext.getInstance(), endpoint, credentialProvider, conf);
}
return utils;
}
//上传
public OSSAsyncTask putObjectMethod(String uploadObject, String uploadFilePath, OssCallback ossCallback) {
PutObjectSamples put = new PutObjectSamples(oss, bucketName, uploadObject, uploadFilePath);
return put.asyncPutObjectFromLocalFile(new OSSProgressCallback<PutObjectRequest>() {
@Override
public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
}
}, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
if (ossCallback != null) {
ossCallback.onSuccess();
}
}
});
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientException, ServiceException serviceException) {
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
if (ossCallback != null) {
ossCallback.onFail();
}
}
});
}
});
}
//上传
public OSSAsyncTask putObjectMethod(String uploadObject, String uploadFilePath, OSSProgressCallback mossProgressCallback, OSSCompletedCallback mcompletedCallback) {
PutObjectSamples put = new PutObjectSamples(oss, bucketName, uploadObject, uploadFilePath);
return put.asyncPutObjectFromLocalFile(mossProgressCallback, mcompletedCallback);
}
//判断文件是否存在
public String fileExist(String fileName) {
try {
boolean exist = oss.doesObjectExist(bucketName, fileName);
Logger.e(bucketName, fileName, exist);
if (exist) {
//加个参数去缓存
return String.format("%s/%s?v=1", AliYunOSSURLFile, fileName);
}
} catch (ClientException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
return null;
}
public interface OssCallback {
void onSuccess();
void onFail();
}
/**
* 发布动态上传图片或者视频
*
* @param file
* @param type 0 img 1 audio 2 video
*/
public void uploadImageOrVideo(File file, int type, UploadCallback uploadCallback) {
uploadCallback.startUpload();
String objectKey = getPath(file, type);
long size;
size = FileUtils.getFileLength(file.getPath());
if (-1 == size) { //文件不存在
uploadCallback.uploadFailed();
return;
}
boolean exist;
try {
exist = oss.doesObjectExist(bucketName, objectKey);
String format = String.format("%s%s", AliYunOSSURLFile, objectKey);
if (false) { //Oss服务器文件存在
uploadCallback.onProgress(size, size);
uploadCallback.uploadEnd(format);
} else { //文件不存在
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, file.getAbsolutePath());
putObjectRequest.setProgressCallback((request, currentSize, totalSize) -> {
ThreadUtils.runOnUiThread(() -> uploadCallback.onProgress(currentSize, totalSize));
});
oss.asyncPutObject(putObjectRequest, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
ThreadUtils.runOnUiThread(() -> uploadCallback.uploadEnd(format));
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientException, ServiceException serviceException) {
ThreadUtils.runOnUiThread(uploadCallback::uploadFailed);
clientException.printStackTrace();
serviceException.printStackTrace();
}
});
}
} catch (ClientException | ServiceException e) {
e.printStackTrace();
uploadCallback.uploadFailed();
}
}
/**
* 发布动态上传图片或者视频
*
* @param file
* @param type 0 img 1 audio 2 video
*/
public String uploadImageOrVideo(File file, int type) {
String objectKey = getPath(file, type);
long size;
size = FileUtils.getFileLength(file.getPath());
if (-1 == size) {
return null;
}
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, file.getAbsolutePath());
putObjectRequest.setProgressCallback((request, currentSize, totalSize) -> {});
oss.putObject(putObjectRequest);
return String.format("%s%s", AliYunOSSURLFile, objectKey);
} catch (ClientException | ServiceException e) {
e.printStackTrace();
return null;
}
}
/**
* 发布动态上传封面用
*
* @param bytes
* @param uploadCallback
*/
public void uploadBitmap(byte[] bytes, UploadCallback uploadCallback) {
uploadCallback.startUpload();
int size = bytes.length;
String md5 = Md5Utils.getMD5String(bytes);
String objectKey = img + md5 + ".jpg";
boolean exist;
try {
exist = oss.doesObjectExist(bucketName, objectKey);
String format = String.format("%s%s", AliYunOSSURLFile, objectKey);
if (false) { //Oss服务器文件存在
uploadCallback.onProgress(size, size);
uploadCallback.uploadEnd(format);
} else { //文件不存在
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, bytes);
putObjectRequest.setProgressCallback((request, currentSize, totalSize) -> {
ThreadUtils.runOnUiThread(() -> uploadCallback.onProgress(currentSize, totalSize));
});
oss.asyncPutObject(putObjectRequest, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
ThreadUtils.runOnUiThread(() -> uploadCallback.uploadEnd(format));
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientException, ServiceException serviceException) {
ThreadUtils.runOnUiThread(uploadCallback::uploadFailed);
clientException.printStackTrace();
serviceException.printStackTrace();
}
});
}
} catch (ClientException | ServiceException e) {
e.printStackTrace();
}
}
/**
* 发布动态上传封面用
*
* @param bytes
*/
public String uploadBitmap(byte[] bytes) {
String md5 = Md5Utils.getMD5String(bytes);
String objectKey = img + md5 + ".jpg";
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectKey, bytes);
putObjectRequest.setProgressCallback((request, currentSize, totalSize) -> {
});
oss.putObject(putObjectRequest);
return String.format("%s%s", AliYunOSSURLFile, objectKey);
} catch (ClientException | ServiceException e) {
e.printStackTrace();
return null;
}
}
/**
* 上传进度条回调
*/
public interface UploadCallback {
void startUpload();
void onProgress(long currentSize, long totalSize);
void uploadEnd(String url);
void uploadFailed();
}
}

View File

@@ -0,0 +1,67 @@
package com.xscm.moduleutil.utils.oss;
import com.alibaba.sdk.android.oss.ClientException;
import com.alibaba.sdk.android.oss.OSS;
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.internal.OSSAsyncTask;
import com.alibaba.sdk.android.oss.model.PutObjectRequest;
import com.alibaba.sdk.android.oss.model.PutObjectResult;
/**
* Created by zhouzhuo on 12/3/15.
*/
public class PutObjectSamples {
private OSS oss;
private String testBucket;
private String testObject;
private String uploadFilePath;
public PutObjectSamples(OSS client, String testBucket, String testObject, String uploadFilePath) {
this.oss = client;
this.testBucket = testBucket;
this.testObject = testObject;
this.uploadFilePath = uploadFilePath;
}
// 从本地文件上传,使用非阻塞的异步接口
public OSSAsyncTask asyncPutObjectFromLocalFile(final OSSProgressCallback<PutObjectRequest> mossProgressCallback, final OSSCompletedCallback<PutObjectRequest, PutObjectResult> mcompletedCallback) {
// 构造上传请求
PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath);
// 异步上传时可以设置进度回调
put.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
@Override
public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
if (mossProgressCallback != null) {
mossProgressCallback.onProgress(request, currentSize, totalSize);
}
}
});
OSSAsyncTask task = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
if (mcompletedCallback != null) {
mcompletedCallback.onSuccess(request, result);
}
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 请求异常
if (clientExcepion != null) {
// 本地异常如网络异常等
clientExcepion.printStackTrace();
}
if (mcompletedCallback != null) {
mcompletedCallback.onFailure(request, clientExcepion, serviceException);
}
}
});
return task;
}
}