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

发布于 2019-12-25 17:46:15

最近在做一个人脸识别考勤系统的时候,遇到了需要同时上传学生学号和学生照片到服务器的需求。因为要根据学生学号和学生照片来判断是否为本人,所有这两个数据不能分开上传到服务器,必须得同时上传。所有我们用到了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(@"上传失败") ;
 }] ;

}

————————————————
版权声明:本文为CSDN博主「dearKundy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dearKundy/article/details/77109423

0 条评论

发布
问题

官网
微信

官方微信