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

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

作者: 奕珃 | 来源:发表于2018-01-08 17:33 被阅读0次

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

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

}];

相关文章

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

    这儿的需求为两个固定的图片数组,可以根据需要进行修改 #FileUpLoad.h /** * 上传带图片的内容,...

  • KingCMS系统asp版本图片上传出现:上传失败,您的文件超出

    KingCMS系统asp版本图片上传出现:上传失败,您的文件超出了服务器设置的上传限制。在网站后台上传图片时提示如...

  • iOS上传图片后台旋转展示问题

    iOS上传图片后台旋转展示问题 在一次上传图片到服务器后,去后台页面查看,发现iOS显示的图片总是旋转90℃的,而...

  • 图片上传处理

    后台管理系统中一些需要上传图片 以及点击图片切换的操作 还有移动端的上传图片,保存方便后期调用 基于 //Ma...

  • Django模型中ImageField字段的使用

    需求 在django admin后台实现图片上传功能 使用 setting.py配置 数据库模型配置 数据库模型修...

  • 文件上传了解

    1.上传方案 1、上传文件流到数据库2、上传base64或者blob到数据库3、当图片很多的时间,需要建立一个图片...

  • js图片上传预览

    项目中碰到一个需求,上传图片及时给用户预览。开始的想法就是上传的图片先传递到后台,在通过ajax获取图片路径显示到...

  • 动态更换背景图片

    在vue中动态更换背景图片1.上传图片先在后台将图片上传到附件服务器,并将id存到数据库中,留下维护接口。2.获取...

  • JSP上传图片/文件到后台

    最近在学习web写了一个小型的购物网站,在添加商品的时候想实现这功能,原本以为分分钟的事,也是花了我不少时间,于是...

  • vue-element-admin上传图片的功能

    在vue后台管理系统里面,有时候会遇到一个图片上传的功能,做这个功能的时候的思路是这样的:1:首选由前端写一个图片...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/glbbnxtx.html