NSURLSession - 上传照片

iOS10以下,AFNetworking上传照片,发生内存泄漏;因此用NSURLSesion实现上传照片,代码如下:

NSString *urlStr = [[self class] createImgUrl];
        
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlStr]];
        [request setHTTPMethod:@"POST"];
        [request setCachePolicy:NSURLRequestReloadIgnoringCacheData];
        [request setTimeoutInterval:15.f];
        //必须要写boundary=,不然报错
        NSString *content = [[NSString alloc]initWithFormat:@"multipart/form-data; boundary=%@", UploadImageBoundary];
        [request setValue:content forHTTPHeaderField:@"Content-Type"];
        //设置token
        [request setValue:gloginManager.token forHTTPHeaderField:@"apptoken"];
        //配置host
        if ([ServerConfigManager currentUsedServerType] == ServerType_CUSTOM_IP) {
            [request setValue:@"btr.m.jd.com" forHTTPHeaderField:@"host"];
        }
        
        NSMutableData *requestMutableData = [NSMutableData data];
        NSMutableString *myString = [NSMutableString stringWithFormat:@"--%@\r\n", UploadImageBoundary];
        [myString appendString:@"Content-Disposition: form-data; name=\"file\"; filename=\"1.jpg\"\r\n"];
        [myString appendString:@"Content-Type: image/jpg\r\n\r\n"];
        /*转化为二进制数据*/
        [requestMutableData appendData:[myString dataUsingEncoding:NSUTF8StringEncoding]];
        /*文件数据部分,也是二进制*/
        [requestMutableData appendData:imageData];
        /*已--boundary结尾表明结束*/
        [requestMutableData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", UploadImageBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
        request.HTTPBody = requestMutableData;
        
        /*开始上传*/
        NSURLSessionDataTask *uploadtask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            //请求回调
            NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            DLog(@"finished===========%@", jsonStr);
            NSDictionary *dictionary = [LJUtils toArrayOrDictionaryFromJSONString:jsonStr];
            dispatch_async(dispatch_get_main_queue(), ^{
                callback(YES, dictionary, nil);
            });
        }];
        
        [uploadtask resume];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,065评论 3 119
  • 配合着早餐,我买了几本书,还没有看,又继续入坑了网络课程,真的印证了那句话:买书,很多人只是以为拥有了书,就拥有知...
    夏天说早安阅读 3,258评论 1 0
  • You are a professional robber planning to rob houses alon...
    六尺帐篷阅读 2,732评论 0 1
  • 2017-4-20学经汇报: 一、学经日期:2017年4月20日 农历三月廿四 阴 星期四 宝贝年龄:5周岁5个月...
    b0a4ca4b06a4阅读 2,286评论 0 1

友情链接更多精彩内容