aliyun-oss-react-native

AliyunObjectManager.java 7.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package com.reactlibrary;
  2. import android.util.Log;
  3. import com.alibaba.sdk.android.oss.ClientException;
  4. import com.alibaba.sdk.android.oss.OSS;
  5. import com.alibaba.sdk.android.oss.ServiceException;
  6. import com.alibaba.sdk.android.oss.callback.OSSCompletedCallback;
  7. import com.alibaba.sdk.android.oss.internal.OSSAsyncTask;
  8. import com.alibaba.sdk.android.oss.model.CopyObjectRequest;
  9. import com.alibaba.sdk.android.oss.model.CopyObjectResult;
  10. import com.alibaba.sdk.android.oss.model.DeleteObjectRequest;
  11. import com.alibaba.sdk.android.oss.model.DeleteObjectResult;
  12. import com.alibaba.sdk.android.oss.model.HeadObjectRequest;
  13. import com.alibaba.sdk.android.oss.model.HeadObjectResult;
  14. import com.alibaba.sdk.android.oss.model.ListObjectsRequest;
  15. import com.alibaba.sdk.android.oss.model.ListObjectsResult;
  16. import com.facebook.react.bridge.Arguments;
  17. import com.facebook.react.bridge.Promise;
  18. import com.facebook.react.bridge.ReadableMap;
  19. import com.facebook.react.bridge.WritableMap;
  20. public class AliyunObjectManager {
  21. private OSS mOSS;
  22. /**
  23. * AliyunObjectManager contructro
  24. * @param oss
  25. */
  26. public AliyunObjectManager(OSS oss) {
  27. mOSS = oss;
  28. }
  29. /**
  30. * asyncHeadObject
  31. * @param bucketName
  32. * @param objectKey
  33. * @param promise
  34. */
  35. public void asyncHeadObject(String bucketName, String objectKey, final Promise promise) {
  36. HeadObjectRequest head = new HeadObjectRequest(bucketName, objectKey);
  37. OSSAsyncTask task = mOSS.asyncHeadObject(head, new OSSCompletedCallback<HeadObjectRequest, HeadObjectResult>() {
  38. @Override
  39. public void onSuccess(HeadObjectRequest headObjectRequest, HeadObjectResult headObjectResult) {
  40. float objectSize = headObjectResult.getMetadata().getContentLength();
  41. String objectContentType = headObjectResult.getMetadata().getContentType();
  42. Log.d("headObject", "object Size: " + headObjectResult.getMetadata().getContentLength());
  43. Log.d("headObject", "object Content Type: " + headObjectResult.getMetadata().getContentType());
  44. WritableMap map = Arguments.createMap();
  45. map.putDouble("objectSize", objectSize);
  46. map.putString("objectContentType", objectContentType);
  47. promise.resolve(map);
  48. }
  49. @Override
  50. public void onFailure(HeadObjectRequest headObjectRequest, ClientException e, ServiceException e1) {
  51. PromiseExceptionManager.resolvePromiseException(e,e1,promise);
  52. }
  53. });
  54. }
  55. /**
  56. * doesObjectExist
  57. * @param bucketName
  58. * @param objectKey
  59. * @param promise
  60. */
  61. public void doesObjectExist(String bucketName,String objectKey,final Promise promise) {
  62. try {
  63. if (mOSS.doesObjectExist(bucketName,objectKey)) {
  64. Log.d("doesObjectExist", "object exist.");
  65. promise.resolve("object exist");
  66. } else {
  67. Log.d("doesObjectExist", "object does not exist.");
  68. promise.resolve("object does not exist");
  69. }
  70. } catch (ClientException e) {
  71. // 本地异常如网络异常等
  72. e.printStackTrace();
  73. promise.reject(e);
  74. } catch (ServiceException e) {
  75. // 服务异常
  76. Log.e("ErrorCode", e.getErrorCode());
  77. Log.e("RequestId", e.getRequestId());
  78. Log.e("HostId", e.getHostId());
  79. Log.e("RawMessage", e.getRawMessage());
  80. promise.reject(e);
  81. }
  82. }
  83. /**
  84. * asyncListObjects
  85. * @param bucketName
  86. * @param prefix
  87. * @param promise
  88. */
  89. public void asyncListObjects(String bucketName,String prefix,final Promise promise) {
  90. ListObjectsRequest listObjects = new ListObjectsRequest(bucketName);
  91. listObjects.setPrefix(prefix);
  92. // set success 、set fail 、set async request
  93. OSSAsyncTask task = mOSS.asyncListObjects(listObjects, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
  94. @Override
  95. public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
  96. Log.d("AyncListObjects", "Success!");
  97. WritableMap map = Arguments.createMap();
  98. for (int i = 0; i < result.getObjectSummaries().size(); i++) {
  99. map.putString("objectKey"+i , result.getObjectSummaries().get(i).getKey());
  100. Log.d("AyncListObjects", "object: " + result.getObjectSummaries().get(i).getKey() + " "
  101. + result.getObjectSummaries().get(i).getETag() + " "
  102. + result.getObjectSummaries().get(i).getLastModified());
  103. }
  104. promise.resolve(map);
  105. }
  106. @Override
  107. public void onFailure(ListObjectsRequest request, ClientException clientExcepion, ServiceException serviceException) {
  108. PromiseExceptionManager.resolvePromiseException(clientExcepion,serviceException,promise);
  109. }
  110. });
  111. }
  112. public void asyncCopyObject(String srcBucketName,
  113. String srcObjectKey,
  114. String desBucketName,
  115. String destObjectKey,
  116. ReadableMap options,
  117. final Promise promise) {
  118. CopyObjectRequest copyObjectRequest = new CopyObjectRequest(srcBucketName, srcObjectKey,
  119. desBucketName, destObjectKey);
  120. //
  121. // set copy metadata
  122. // ObjectMetadata objectMetadata = new ObjectMetadata();
  123. // objectMetadata.setContentType("application/octet-stream");
  124. // copyObjectRequest.setNewObjectMetadata(objectMetadata);
  125. // async copy
  126. OSSAsyncTask copyTask = mOSS.asyncCopyObject(copyObjectRequest, new OSSCompletedCallback<CopyObjectRequest, CopyObjectResult>() {
  127. @Override
  128. public void onSuccess(CopyObjectRequest request, CopyObjectResult result) {
  129. Log.d("copyObject", "copy success!");
  130. promise.resolve("copy success!");
  131. }
  132. @Override
  133. public void onFailure(CopyObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
  134. PromiseExceptionManager.resolvePromiseException(clientExcepion,serviceException,promise);
  135. }
  136. });
  137. }
  138. /**
  139. * asyncDeleteObject
  140. * @param bucketName
  141. * @param objectKey
  142. * @param promise
  143. */
  144. public void asyncDeleteObject(String bucketName, String objectKey, final Promise promise) {
  145. // async delete request
  146. DeleteObjectRequest delete = new DeleteObjectRequest(bucketName, objectKey);
  147. OSSAsyncTask deleteTask = mOSS.asyncDeleteObject(delete, new OSSCompletedCallback<DeleteObjectRequest, DeleteObjectResult>() {
  148. @Override
  149. public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
  150. Log.d("asyncCopyAndDelObject", "success!");
  151. promise.resolve("delete success!");
  152. }
  153. @Override
  154. public void onFailure(DeleteObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
  155. PromiseExceptionManager.resolvePromiseException(clientExcepion,serviceException,promise);
  156. }
  157. });
  158. }
  159. }