aliyun-oss-react-native

AliyunObjectManager.java 7.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  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 opitons {delimiter|prefix|marker|maxkeys}
  87. * @param promise
  88. */
  89. public void asyncListObjects(String bucketName, ReadableMap options, final Promise promise) {
  90. ListObjectsRequest listObjects = new ListObjectsRequest(bucketName);
  91. if(options.hasKey("prefix")) {
  92. listObjects.setPrefix(options.getString("prefix"));
  93. }
  94. if(options.hasKey("delimiter")) {
  95. listObjects.setDelimiter(options.getString("delimiter"));
  96. }
  97. if(options.hasKey("marker")) {
  98. listObjects.setMarker(options.getString("delimiter"));
  99. }
  100. if(options.hasKey("maxkeys")) {
  101. listObjects.setMaxKeys(options.getInt(String.valueOf(options.getInt("maxkeys"))));
  102. }
  103. // set success 、set fail 、set async request
  104. OSSAsyncTask task = mOSS.asyncListObjects(listObjects, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
  105. @Override
  106. public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
  107. Log.d("AyncListObjects", "Success!");
  108. WritableMap map = Arguments.createMap();
  109. for (int i = 0; i < result.getObjectSummaries().size(); i++) {
  110. map.putString("objectKey"+i , result.getObjectSummaries().get(i).getKey());
  111. Log.d("AyncListObjects", "object: " + result.getObjectSummaries().get(i).getKey() + " "
  112. + result.getObjectSummaries().get(i).getETag() + " "
  113. + result.getObjectSummaries().get(i).getLastModified());
  114. }
  115. promise.resolve(map);
  116. }
  117. @Override
  118. public void onFailure(ListObjectsRequest request, ClientException clientExcepion, ServiceException serviceException) {
  119. PromiseExceptionManager.resolvePromiseException(clientExcepion,serviceException,promise);
  120. }
  121. });
  122. }
  123. public void asyncCopyObject(String srcBucketName,
  124. String srcObjectKey,
  125. String desBucketName,
  126. String destObjectKey,
  127. ReadableMap options,
  128. final Promise promise) {
  129. CopyObjectRequest copyObjectRequest = new CopyObjectRequest(srcBucketName, srcObjectKey,
  130. desBucketName, destObjectKey);
  131. //
  132. // set copy metadata
  133. // ObjectMetadata objectMetadata = new ObjectMetadata();
  134. // objectMetadata.setContentType("application/octet-stream");
  135. // copyObjectRequest.setNewObjectMetadata(objectMetadata);
  136. // async copy
  137. OSSAsyncTask copyTask = mOSS.asyncCopyObject(copyObjectRequest, new OSSCompletedCallback<CopyObjectRequest, CopyObjectResult>() {
  138. @Override
  139. public void onSuccess(CopyObjectRequest request, CopyObjectResult result) {
  140. Log.d("copyObject", "copy success!");
  141. promise.resolve("copy success!");
  142. }
  143. @Override
  144. public void onFailure(CopyObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
  145. PromiseExceptionManager.resolvePromiseException(clientExcepion,serviceException,promise);
  146. }
  147. });
  148. }
  149. /**
  150. * asyncDeleteObject
  151. * @param bucketName
  152. * @param objectKey
  153. * @param promise
  154. */
  155. public void asyncDeleteObject(String bucketName, String objectKey, final Promise promise) {
  156. // async delete request
  157. DeleteObjectRequest delete = new DeleteObjectRequest(bucketName, objectKey);
  158. OSSAsyncTask deleteTask = mOSS.asyncDeleteObject(delete, new OSSCompletedCallback<DeleteObjectRequest, DeleteObjectResult>() {
  159. @Override
  160. public void onSuccess(DeleteObjectRequest request, DeleteObjectResult result) {
  161. Log.d("asyncCopyAndDelObject", "success!");
  162. promise.resolve("delete success!");
  163. }
  164. @Override
  165. public void onFailure(DeleteObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
  166. PromiseExceptionManager.resolvePromiseException(clientExcepion,serviceException,promise);
  167. }
  168. });
  169. }
  170. }