No Description

AliOSSModule.m 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. //
  2. // AliOSSModule.m
  3. // campus
  4. //
  5. // Created by zack on 2018/6/12.
  6. // Copyright © 2018年 Facebook. All rights reserved.
  7. //
  8. #import "AliOSSModule.h"
  9. #define akid @"LTAIbKJk7bY1JTm4"
  10. #define skid @"UWHW9eC2EYz6Uj391OPQt4LM9rLuzC"
  11. #define endpoint @"https://oss-cn-hangzhou.aliyuncs.com"
  12. #define token @"CAES+wMIARKAAZhjH0EUOIhJMQBMjRywXq7MQ/cjLYg80Aho1ek0Jm63XMhr9Ocer8p1YaX1NTDiCFZWFkvlHf1pQhuxfKBc+mRR9KAbHUefqH+rdjZqjTF7p2m1wJXP8S6k+G2MpHrUe6TYBkJ43GhhTVFMuM3BZajY3VjZWOXBIODRIR1FKZjIiEjMzMzE0MjY0NzM5MTE4NjkxMSoLY2xpZGSSDgSDGAGESGTETqOio6c2RrLWRlbW8vKgoUYWNzOm9zczoqOio6c2RrLWRlbW9KEDExNDg5MzAxMDcyNDY4MThSBTI2ODQyWg9Bc3N1bWVkUm9sZVVzZXJgAGoSMzMzMTQyNjQ3MzkxMTg2OTExcglzZGstZGVtbzI="
  13. @implementation AliOSSModule
  14. RCT_EXPORT_MODULE();
  15. RCT_EXPORT_METHOD(uploadImages:(NSArray *)imageNames imageBase64Datas:(NSArray *)imageBase64Datas callback:(RCTResponseSenderBlock)callback){
  16. [self initAndUploadImage:imageNames imageBase64Datas:imageBase64Datas completeBlock:^{
  17. callback(@[@(YES)]);
  18. }];
  19. }
  20. - (void)initAndUploadImage:(NSArray *)imageNames imageBase64Datas:(NSArray *)imageBase64Datas completeBlock:(void(^)())completeBlock {
  21. [self.imageNames removeAllObjects];
  22. [self.imageBase64Datas removeAllObjects];
  23. [self.imageNames addObjectsFromArray:imageNames];
  24. [self.imageBase64Datas addObjectsFromArray:imageBase64Datas];
  25. [self benginUploadTask:completeBlock];
  26. }
  27. - (void)benginUploadTask:(void(^)())completeBlock {
  28. NSOperationQueue * queue = [[NSOperationQueue alloc] init];
  29. NSBlockOperation * operation = [NSBlockOperation blockOperationWithBlock:^{
  30. //NSLog(@"%@", [NSThread currentThread]);
  31. }];
  32. for (NSInteger i = 0; i < self.imageBase64Datas.count; i ++) {
  33. [operation addExecutionBlock:^{
  34. NSData * imageData =[[NSData alloc] initWithBase64EncodedString:self.imageBase64Datas[i] options:NSDataBase64DecodingIgnoreUnknownCharacters];
  35. [self uploadWithImageName:self.imageNames[i] imageData:imageData];
  36. }];
  37. }
  38. [operation setCompletionBlock:^{
  39. //https://links123-images.oss-cn-hangzhou.aliyuncs.com/test13.png
  40. completeBlock();
  41. }];
  42. [queue addOperation:operation];
  43. }
  44. - (void)uploadWithImageName:(NSString *)imageName imageData:(NSData *)imageData{
  45. OSSPutObjectRequest * put = [OSSPutObjectRequest new];
  46. put.bucketName = @"links123-images";
  47. put.objectKey = imageName;
  48. put.uploadingData = imageData;//UIImagePNGRepresentation([UIImage imageNamed:@"test"]); // 直接上传NSData
  49. put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
  50. NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
  51. };
  52. //https://links123-images.oss-cn-hangzhou.aliyuncs.com/test.png
  53. OSSTask * putTask = [self.client putObject:put];
  54. [putTask waitUntilFinished];
  55. if (!putTask.error) {
  56. NSLog(@"okay");
  57. }else {
  58. NSLog(@"failed");
  59. }
  60. }
  61. - (OSSClient *)client {
  62. if (!_client) {
  63. id<OSSCredentialProvider> provider = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:akid secretKeyId:skid securityToken:@""];
  64. _client = [[OSSClient alloc] initWithEndpoint:endpoint credentialProvider:provider];
  65. }
  66. return _client;
  67. }
  68. - (NSMutableArray *)imageNames {
  69. if (!_imageNames) {
  70. _imageNames = [[NSMutableArray alloc] init];
  71. }
  72. return _imageNames;
  73. }
  74. - (NSMutableArray *)imageBase64Datas {
  75. if (!_imageBase64Datas) {
  76. _imageBase64Datas = [[NSMutableArray alloc] init];
  77. }
  78. return _imageBase64Datas;
  79. }
  80. @end