图片上传到七牛,客户端生产自签名
2015-12-24 17:11
225 查看
#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);
});
}
}];
}
#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);
});
}
}];
}
相关文章推荐
- Android Volley入门到精通:使用Volley加载网络图片
- getBitmap.getWidth获取图片不是实际图片大小
- Cocos2d-js笔记
- GestureDetector 手势识别器
- A记录,CNAME,MX记录,TTL
- where 常用条件范例
- Java并发编程:volatile关键字解析
- iOS怎么防止文件被Icloud或者iTunes备份
- webdriver+java+maven+testng环境搭建
- awk用法一
- 深入分析Docker镜像原理
- Mac地址和字符串之间的转换
- OC内存管理
- Workerman 一款纯PHP开发的开源高性能的PHP socket 服务器框架。
- 仿微信中加载网页时带线行进度条的WebView的实现
- Android获取经度和纬度
- Angular.js入门的样例
- case when then else end 使用
- 打印sql
- 第十三章_异步处理