直接上代碼:
阿里云上傳圖片蜕依,首先先從后臺(tái)獲取AccessKeyId
AccessKeySecret
SecurityToken
用這三個(gè)值調(diào)阿里云上傳圖片API
1.首先我們新建一個(gè)類:AliyunOSSUpload
繼承NSObject
.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#define AliyunUpload [AliyunOSSUpload aliyunInit]
@interface AliyunOSSUpload : NSObject
+(AliyunOSSUpload *)aliyunInit;
/*
imgArr 圖片數(shù)組
imagesObject 圖片名稱(需要和后臺(tái)商量圖片名稱的格式)
*/
-(void)uploadImage:(NSArray*)imgArr imagesObject:(NSArray *)imagesObject success:(void (^)(NSString *obj))success;
@end
.m
#import <AliyunOSSiOS/OSSService.h>
#import <AliyunOSSiOS/OSSCompat.h>
#import "AliyunOSSUpload.h"
#import "IHUtility.h" //就是對(duì)圖片名字的操作
#import "NSObject+SBJSON.h"
NSString * const endPoint = @"";
OSSClient * client;
@implementation AliyunOSSUpload
static AliyunOSSUpload *_config;
+(AliyunOSSUpload *)aliyunInit{
@synchronized(self){
if (_config==nil) {
[OSSLog enableLog];
_config=[[AliyunOSSUpload alloc] init];
id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:@"服務(wù)器獲取" secretKeyId:@"服務(wù)器獲取" securityToken:@"服務(wù)器獲取"];
client = [[OSSClient alloc] initWithEndpoint:endPoint credentialProvider:credential];
}
}
return _config;
}
-(void)uploadImage:(NSArray*)imgArr imagesObject:(NSArray *)imagesObject success:(void (^)(NSString *obj))success{
NSMutableArray *imgArray=[NSMutableArray new];
for (int i=0; i<imgArr.count; i++) {
NSData* data;
UIImage *image1 = (UIImage *)imgArr[i];
UIImage *image=[IHUtility rotateAndScaleImage:image1 maxResolution:(int)ScreenWidth*2];
OSSPutObjectRequest * put = [OSSPutObjectRequest new];
put.contentType=@"image/jpeg";
put.bucketName = @"跟后臺(tái)要";
NSString *imgName;
NSData *data1=UIImageJPEGRepresentation(image, 1);
float length1 = [data1 length]/1024;
if (length1<600) {
data = UIImageJPEGRepresentation(image, 1);
}else{
data = UIImageJPEGRepresentation(image, 0.5);
}
//保證和服務(wù)器的文件名字一樣
imgName = imagesObject[i];
put.objectKey = imgName;
put.uploadingData = data; // 直接上傳NSData
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
NSString *imgWidth;
NSString *imgHeigh;
imgWidth=[NSString stringWithFormat:@"%lf",image.size.width];
imgHeigh=[NSString stringWithFormat:@"%lf",image.size.height];
NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"/%@",imgName],@"t_url",
imgWidth,@"t_width",
imgHeigh,@"t_height",
nil];
[imgArray addObject:dic];
if (client==nil) {
id<OSSCredentialProvider> credential = [[OSSStsTokenCredentialProvider alloc] initWithAccessKeyId:@"服務(wù)器獲取" secretKeyId:@"服務(wù)器獲取" securityToken:@"服務(wù)器獲取"];
client = [[OSSClient alloc] initWithEndpoint:endPoint credentialProvider:credential];
}
OSSTask * putTask = [client putObject:put];
[putTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"upload object success!");
if (type==ENT_fileImageProject){
if (i==imgArr.count-1) {
NSString *str=[imgArray JSONRepresentation];
success(str);
}
}
} else{
NSLog(@"upload object failed, error: %@" , task.error);
[SVProgressHUD showErrorWithStatus:@"圖片上傳失敗付魔!"];
}
return nil;
}];
}
}
@end