ios开发 利用AFNetworking实现同时上传字符串与图片数据

        最近在做一个人脸识别考勤系统的时候,遇到了需要同时上传学生学号和学生照片到服务器的需求。因为要根据学生学号和学生照片来判断是否为本人,所有这两个数据不能分开上传到服务器,必须得同时上传。所有我们用到了AFNetworking的AFMultiparFormData来传输数据。下面是程序的关键代码:

//上传头像图片到服务器
-(void) postImageToServer
{
    _manager = [AFHTTPSessionManager manager] ;
    _manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:
                                                          @"application/json",
                                                          @"text/html"       ,
                                                          @"image/jpeg"      ,
                                                          @"image/png"       ,
                                                          @"image/jpg"       ,
                                                          @"application/octet-stream",
                                                          @"text/json"      ,
                                                          nil] ;
    
    _manager.requestSerializer  = [AFHTTPRequestSerializer serializer ] ;
    _manager.responseSerializer = [AFHTTPResponseSerializer serializer] ;
    
    [_manager POST:@"http://192.168.31.244:8080/ImageUploadServer/uploadimage" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData)
     {
         //上传学生学号到服务器
         //_strStudentId为学生学号字符串
         NSData *data = [_strStudentId dataUsingEncoding:NSUTF8StringEncoding] ;
         [formData appendPartWithFormData:data name:@"studentId"] ;
         
         //在网络开发中,上传文件时,文件是不允许被覆盖,文件重名
         //要解决此问题,可以在上传时使用当前的系统事件作为文件名
         NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
         
         //设置时间格式
         formatter.dateFormat = @"yyyyMMddHHmmss" ;
         NSString *str = [formatter stringFromDate:[NSDate date]] ;
         NSString *fileName = [NSString stringWithFormat:@"%@.jpeg",str] ;
         
         //压缩图片
         //_imageEdit是从相机获取的图片
         NSData *imageData = UIImageJPEGRepresentation(_imageEdit, 0.1) ;
         
         //上传图片到服务器
         [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/jpeg"] ;
     }
     
     //上传过程中调用
          progress:^(NSProgress * _Nonnull uploadProgress)
     {
     }
     
     //上传成功调用
           success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)
     {
         NSLog(@"上传成功!") ;
     }
           failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)
    {
        NSLog(@"上传失败") ;
     }] ;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值