图片上传到七牛,客户端生产自签名

时间:2021-11-08 19:45:03

#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);

            });

        }

        

    }];

}