#import <Foundation/Foundation.h>
#import "NSString+md5String.h"
@interface NDBizCodeUtil : NSObject
+ (NDBizCodeUtil *) shareBizCodeUntil;
- (NSString *)generateImgKeyWithUserID:(NSString *)userId imageName:(NSString *)imageName;
#import "NDBizCodeUtil.h"
@implementation NDBizCodeUtil
+ (NDBizCodeUtil *) shareBizCodeUntil
{
static NDBizCodeUtil *shareInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
shareInstance = [[super allocWithZone:NULL] init];
});
return shareInstance;
}
+(instancetype) allocWithZone:(struct _NSZone *)zone{
return [self shareBizCodeUntil];
}
- (NSString *)generateImgKeyWithUserID:(NSString *)userId imageName:(NSString *)imageName
{
NSString *imageKey = nil;
userId = userId?userId:@"";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyyMMddHHmm"];
NSString *dateStr = [formatter stringFromDate:[NSDate date]];
DLog(@"分钟:%@",dateStr);
[formatter setDateFormat:@"yyyyMMddHHmmssSSS"];
NSString *millisecond =[formatter stringFromDate:[NSDate date]];
DLog(@"毫秒:%@",millisecond);
if (!imageName) {
imageName = dateStr;
}
NSString *randomStr = [imageName stringByAppendingFormat:@"|%@|%@",millisecond,userId];
randomStr = [randomStr md5HexDigest];
imageKey = [dateStr stringByAppendingString:[randomStr substringWithRange:NSMakeRange(0,25)]];
return imageKey;
}
@end
- (void)updateImage:(UIImage *)upImage imageName:(NSString *)imageName userID:(NSString *)userId imageSize:(CGSize)size complete:(Complete)callback
{
if (![self authorizeWithUserID:userId]) {
return;
}
UIImage *uploadImage = upImage;
if (size.width != 0 && size.height != 0) {
uploadImage = [UIImageTransformation imageByScalingAndCroppingForSize:size image:upImage];
}
NDNetworkRequest *imageUpadeTokenRequest = [[NDNetworkRequest alloc] initWithBaseURL:[NSURL URLWithString:kHostAddressURL]];
[imageUpadeTokenRequest request:kRequestQiniuUpdateToken WithGETParameters:nil completion:^(NSInteger code,id responseObject, NSError *error) {
self.targertViewController = nil;
if (!error) {
//Todo,上传图片到Qiniu
NSString *uploadToken = [responseObject objectForKey:@"uploadToken"];
//TODO 客户端自我生产key
NSString *key = [[NDBizCodeUtil shareBizCodeUntil] generateImgKeyWithUserID:userId imageName:imageName];
NSLog(@"key ===== %@",key);
QNUploadManager *uploadManager = [QNUploadManager sharedInstanceWithConfiguration:nil];
QNUploadOption *opt = [[QNUploadOption alloc] initWithMime:@"image/jpeg" progressHandler:nil params:@{ @"x:foo":@"fooval" } checkCrc:YES cancellationSignal:nil];
[uploadManager putData:UIImageJPEGRepresentation(uploadImage, 0.8) key:key token:uploadToken complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
DLog(@"info :%@", info);
if (info.statusCode == 200) {
DLog(@"resp : %@", resp);
dispatch_async(dispatch_get_main_queue(), ^{
callback(resp,nil);
});
}else{
DLog(@"上传图片错误");
NSError *mError = [[NSError alloc] initWithDomain:@"com.needapp.need" code:info.statusCode userInfo:@{NSLocalizedDescriptionKey:@"上传图片错误"}];
dispatch_async(dispatch_get_main_queue(), ^{
callback(nil,mError);
});
}
} option:opt];
}else{
DLog(@"获取上传图片token错误");
dispatch_async(dispatch_get_main_queue(), ^{
callback(nil,error);
});
}
}];
}