上传图片到后台数据库(做植物系统的笔记)

这儿的需求为两个固定的图片数组,可以根据需要进行修改

#FileUpLoad.h

/**    *  上传带图片的内容,允许多张图片上传(URL)POST  

 *   

*  @param url          传url    

*  @param images       要上传的图片数组(注意数组内容需是图片)   

*  @param parameter    图片数组对应的参数 可以为nil    

*  @param parameters   其他参数字典 可以为nil   

*  @param succeedBlock 成功的回调   

*  @param failedBlock  失败的回调    */

-(void)startMultiPartUploadTaskWithURL:(NSString *)url  imagesArray:(NSArray *)images  parameterOfimages:(NSArray *)parameter   parametersDict:(NSDictionary *)parameters succeedBlock:(void (^)(NSDictionary *dict))succeedBlock  failedBlock:(void (^)(NSError *error))failedBlock;

#FileUpLoad.m

- (void)startMultiPartUploadTaskWithURL:(NSString *)url imagesArray:(NSArray *)images parameterOfimages:(NSArray *)parameter parametersDict:(NSDictionary *)parameters succeedBlock:(void (^)(NSDictionary *dict))succeedBlock failedBlock:(void (^)(NSError *error))failedBlock{

        AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

             //以下三项manager的属性根据需要进行配置      //                manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];

        manager.requestSerializer.timeoutInterval = 10;

        manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];             manager.securityPolicy.allowInvalidCertificates = YES;             [manager.securityPolicy setValidatesDomainName:NO];                  manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/css",@"text/xml",@"text/plain", @"application/javascript", @"image/*", nil];

         manager.requestSerializer = [AFHTTPRequestSerializer serializer];             manager.responseSerializer = [AFHTTPResponseSerializer serializer];              [manager POST:url parameters:parameters constructingBodyWithBlock:^(id  _Nonnull formData) {

                int i = 0;

                 //根据当前系统时间生成图片名称

                 NSDate *date = [NSDate date];

                 NSDateFormatter *formatter = [[NSDateFormatter alloc]init];                                  [formatter setDateFormat:@"yyyyMMddHHmmss"];

                 NSString *dateString = [formatter stringFromDate:date];

                          //习性文件数组        

                for (int a = 0;a <[images[0] count]; a++) {

                    if ([images[0][a] isKindOfClass:[UIImage class]]) {//判断是否为UIImage,如果不是图片,压缩会报错! 

                    UIImage* image = images[0][a];

                    NSString *fileName = [NSString stringWithFormat:@"%@%d.png",dateString,i];

                     NSData *imageData = [self imageData:image];                                                      [formData appendPartWithFileData:imageData name:parameter[0] fileName:fileName mimeType:@"image/jpg/png/jpeg"];

            }

        }

        //应用文件数组

        for (int a = 0;a <[images[1] count]; a++) {

            if ([images[1][a] isKindOfClass:[UIImage class]]) {

                UIImage* image = images[1][a];

                NSString *fileName = [NSString stringWithFormat:@"%@%d.png",dateString,i];

                NSData *imageData = [self imageData:image];

               [formData appendPartWithFileData:imageData name:parameter[1] fileName:fileName mimeType:@"image/jpg/png/jpeg"];

            }

        }

       } progress:^(NSProgress * _Nonnull uploadProgress) {

NSLog(@"进度条");

        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

                 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];

        NSLog(@"common post responseObject = %@", responseObject);                 NSLog(@"common post json = %@", dict);

                 succeedBlock(dict);

     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {                  if (error) {

                  failedBlock(error);

                  NSLog(@"error == %@",error);

                     }

             }];

}


压缩图片

//压缩图片至100k以下

- (NSData *)imageData:(UIImage *)myimage{

    NSData *data = UIImageJPEGRepresentation(myimage, 1.0);

    if (data.length>100*1024) {

        if (data.length>1024*1024) {//1M以及以上

            data = UIImageJPEGRepresentation(myimage, 0.1);

        } else if (data.length>512*1024) {//0.5M-1M

            data = UIImageJPEGRepresentation(myimage, 0.5);

        } else if (data.length>200*1024) {//0.25M-0.5M

            data = UIImageJPEGRepresentation(myimage, 0.9);

        }

    }

    return data;

}


调用 

NSDictionary *paramDic = @{@"id":self.plantDetailModel.id,                                                                              @"name":nameAndStatusModel.name,                                                                              @"typeId":nameAndStatusModel.statusID,                                                                        @"shapeDesc":infoModelOne.describe,                                                                              @"applyDesc":infoModelTwo.describe};

NSArray *imags = @[infoModelOne.imageArr, infoModelTwo.imageArr];

NSArray *desc = @[@"shapeFileGroup", @"applyFileGroup"];        

FileUpLoad *file = [[FileUpLoad alloc] init];        

[file startMultiPartUploadTaskWithURL:[NSString stringWithFormat:@"%@%@",MAINURL, URL] imagesArray:imags parameterOfimages:desc parametersDict:paramDic succeedBlock:^(NSDictionary *dict) {

    NSLog(@"dict  = %@", dict);

} failedBlock:^(NSError *error) {

    NSLog(@"error  = %@", error);

}];

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容