直接上代码:
阿里云上传图片,首先先从后台获取AccessKeyId
AccessKeySecret
SecurityToken
用这三个值调阿里云上传图片API
1.首先我们新建一个类:AliyunOSSUpload
继承NSObject
.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#define AliyunUpload [AliyunOSSUpload aliyunInit]
@interface AliyunOSSUpload : NSObject
+(AliyunOSSUpload *)aliyunInit;
/*
imgArr 图片数组
imagesObject 图片名称(需要和后台商量图片名称的格式)
*/
-(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" //就是对图片名字的操作
#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:@"服务器获取" secretKeyId:@"服务器获取" securityToken:@"服务器获取"];
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 = @"跟后台要";
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);
}
//保证和服务器的文件名字一样
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:@"服务器获取" secretKeyId:@"服务器获取" securityToken:@"服务器获取"];
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
网友评论