转载:https://blog.csdn.net/fangziyi199110/article/details/103751347
工具类
/** * Created by EDZ on 2020/9/23. * Describe:工具类 */ public class OssManager { /** * Context */ private Context mContext; /** * bucket name */ private String mBucketName; /** * access key id */ private String mAccessKeyId; /** * access key secret */ private String mAccessKeySecret; /** * end point url */ private String mEndPoint; /** * file name or file dir */ private String mObjectKey; /** * local file path */ private String mLocalFilePath; /** * push file progress listener */ private OnPushProgressListener onPushProgressListener; /** * push file state */ private OnPushStateListener onPushStateListener; /** * OSS async task */ private OSSAsyncTask mOSSAsyncTask; private OssManager(Context context, String bucketName, String accessKeyId, String accessKeySecret, String endPoint, String objectKey, String localFilePath) { this.mContext = context; this.mBucketName = bucketName; this.mAccessKeyId = accessKeyId; this.mAccessKeySecret = accessKeySecret; this.mEndPoint = endPoint; this.mObjectKey = objectKey; this.mLocalFilePath = localFilePath; push(); } /** * set push file progress listener,pushing call back onProgress(PutObjectRequest request, long currentSize, long totalSize) * * @param listener push file progress listener */ public void setPushProgressListener(OnPushProgressListener listener) { this.onPushProgressListener = listener; } /** * set push file state listener,push success call back onSuccess(PutObjectRequest request, PutObjectResult result) * push failed call back onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) * * @param listener push file state listener */ public void setPushStateListener(OnPushStateListener listener) { this.onPushStateListener = listener; } /** * push file to oss,this method is async task */ public void push() { OSSCredentialProvider ossCredentialProvider = new OSSPlainTextAKSKCredentialProvider(mAccessKeyId, mAccessKeySecret); OSS oss = new OSSClient(mContext.getApplicationContext(), mEndPoint, ossCredentialProvider); onPush(oss); } /** * push file to oss,this method is async task */ public void push(String accessKeyId, String accessKeySecret, String securityToken) { if (accessKeyId == null || accessKeySecret == null || securityToken == null) return; OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken); OSS oss = new OSSClient(mContext.getApplicationContext(), mEndPoint, credentialProvider); onPush(oss); } /** * push * @param oss OSS */ private void onPush(OSS oss) { PutObjectRequest put = new PutObjectRequest(mBucketName, mObjectKey, mLocalFilePath); // 异步上传时可以设置进度回调。 // put.setProgressCallback((request, currentSize, totalSize) -> { // Log.e("currentSize = " + currentSize, "totalSize = " + totalSize); // if (onPushProgressListener != null) { // onPushProgressListener.onProgress(request, currentSize, totalSize); // } // }); // 此处调用异步上传方法 // OSSAsyncTask ossAsyncTask= 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()); // }} mOSSAsyncTask = oss.asyncPutObject(put, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() { @Override public void onSuccess(PutObjectRequest request, PutObjectResult result) { Log.e("PutObject", "UploadSuccess"); Log.e("ETag", result.getETag()); Log.e("RequestId", result.getRequestId()); if (onPushStateListener != null) { onPushStateListener.onSuccess(request, result); } } @Override public void onFailure(PutObjectRequest request, ClientException clientException, ServiceException serviceException) { // 请求异常。 if (clientException != null) { // 本地异常,如网络异常等。 Log.e("异常:",clientException.getMessage()); } if (serviceException != null) { // 服务异常。 Log.e("ErrorCode", serviceException.getErrorCode()); Log.e("RequestId", serviceException.getRequestId()); Log.e("HostId", serviceException.getHostId()); Log.e("RawMessage", serviceException.getRawMessage()); } if (onPushStateListener != null) { onPushStateListener.onFailure(request, clientException, serviceException); } } }); } /** * cancel file push task */ public void cancelPush() { if (mOSSAsyncTask != null && !mOSSAsyncTask.isCanceled() && !mOSSAsyncTask.isCompleted()) { mOSSAsyncTask.cancel(); } } /** * OssManager builder,init params */ public static class Builder { private Context context; private String bucketName; private String accessKeyId; private String accessKeySecret; private String endPoint; private String objectKey; private String localFilePath; public Builder(Context context) { this.context = context; } public Builder bucketName(String bucketName) { this.bucketName = bucketName; return this; } public Builder accessKeyId(String accessKeyId) { this.accessKeyId = accessKeyId; return this; } public Builder accessKeySecret(String accessKeySecret) { this.accessKeySecret = accessKeySecret; return this; } public Builder endPoint(String endPint) { this.endPoint = endPint; return this; } public Builder objectKey(String objectKey) { this.objectKey = objectKey; return this; } public Builder localFilePath(String localFilePath) { this.localFilePath = localFilePath; return this; } public OssManager build() { return new OssManager(context, bucketName, accessKeyId, accessKeySecret, endPoint, objectKey, localFilePath); } } public interface OnPushProgressListener { void onProgress(PutObjectRequest request, long currentSize, long totalSize); } public interface OnPushStateListener { void onSuccess(PutObjectRequest request, PutObjectResult result); void onFailure(PutObjectRequest request, ClientException clientException, ServiceException serviceException); } }
调用
OssManager.Builder builder=new OssManager.Builder(MainActivity.this); builder.accessKeyId("——————") ;//秘钥 builder.bucketName("位置");//存储位置http://这里的.oss-cn-shanghai.aliyuncs.com/applog/test.txt builder.accessKeySecret("——————");//秘钥 builder.endPoint("http://oss-cn-shanghai.aliyuncs.com");//地域节点 builder.objectKey("applog/test.txt");//上传到某个文件夹内部文件 builder.localFilePath(mPicturePath);//上传本地文件路径 builder.build();
6.0读写权限申请 public static void verifyStoragePermissions(Activity activity) { try { //检测是否有写的权限 int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE"); if (permission != PackageManager.PERMISSION_GRANTED) { // 没有写的权限,去申请写的权限,会弹出对话框 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,REQUEST_EXTERNAL_STORAGE); } } catch (Exception e) { e.printStackTrace(); } }
依赖
//阿里云 compile 'com.aliyun.dpa:oss-android-sdk:2.4.5' compile 'com.squareup.okhttp3:okhttp:3.4.1' compile 'com.squareup.okio:okio:1.9.0' implementation 'com.aliyun.dpa:oss-android-sdk:2.5.0'