iOS中使用POST向服务器发送图片文件

来源:互联网 发布:数据库开发用什么语言 编辑:程序博客网 时间:2024/05/22 12:21
#pragma mark -使用POST上传图片-//parmater:上传的参数    data:图片数据  name:保存后的文件名-(void)sendPost2:(NSString *)urlStr parmater:(NSDictionary *)parm data:(NSData*)data name:(NSString *)fileName{    //初始化要上传的数据    NSMutableData *dataM = [NSMutableData data];    //准备工作(规定好了的格式),事先规定好分隔符TEST_FORM_BOUNDARY    NSString *strTop=[NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"file\"; filename=\"%@\"\r\nContent-Type: %@\r\n",TEST_FORM_BOUNDARY,fileName,@"image/png"];    NSLog(@"%@",strTop);        [dataM appendData:BXEncode(strTop)];    [dataM appendData:BXEncode(@"\r\n")];    [dataM appendData:data];    [dataM appendData:BXEncode(@"\r\n")];        //遍历一遍字典参数,用block形式执行,会自动分配到多核cpu上运行    [parm enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {                //参数开始的标志        NSString *boundry = [NSString stringWithFormat:@"--%@\r\n",TEST_FORM_BOUNDARY];        [dataM appendData:BXEncode(boundry)];                NSString *disposition = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n", key];                [dataM appendData:BXEncode(disposition)];        [dataM appendData:BXEncode(@"\r\n")];        [dataM appendData:BXEncode(obj)];        [dataM appendData:BXEncode(@"\r\n")];    }];        //尾部的分隔符    NSString *strBottom = [NSString stringWithFormat:@"--%@--\r\n",TEST_FORM_BOUNDARY];        [dataM appendData:BXEncode(strBottom)];     //请求设置    NSURL *url = [NSURL URLWithString:urlStr];    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];    [request setHTTPMethod:@"POST"];    [request setHTTPBody:dataM];            //设置上传数据的长度及格式    [request setValue:[NSString stringWithFormat:@"%lu",(unsigned long)dataM.length] forHTTPHeaderField:@"Content-Length"];        [request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",TEST_FORM_BOUNDARY] forHTTPHeaderField:@"Content-Type"];        //上传    NSURLSession *session = [NSURLSession sharedSession];    NSURLSessionUploadTask *task = [session uploadTaskWithRequest:request fromData:dataM completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {        if (!error && data) {            NSLog(@"response:%@",response);            NSLog(@"data:%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);        }else{            NSLog(@"error:%@",error);        }    }];    [task resume];}

0 0
原创粉丝点击