iOSBodyForm、multipart/form-data图片上传

iOS高级程序师技术群:622177838,期待你的加入


+ (void)multiPartPost:(NSDictionary *)dicData andImageNames:(NSArray *)images andImageNamesKey:(NSString *)imageName URL:(nonnull NSString *)modelurl success:(void (^)(id json))success failure:(void (^)(NSError *error))failure {

    
    NSURL *url = [NSURL URLWithString:modelurl];
    NSMutableData * bodyData = [NSMutableData data];
    for(NSString *key in dicData.allKeys) {
        id value = [dicData objectForKey:key];
        [bodyData appendData:[[NSString stringWithFormat:@"--%@\r\n",@"POST_BOUNDS"] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[[NSString stringWithFormat:@"%@\r\n",value] dataUsingEncoding:NSUTF8StringEncoding]];
    }
    for (NSInteger i = 0; i < images.count; i++) {
        UIImage * keyN = images[i];
        NSString *suffix,*contentType;
        NSData * imageData;
        if (UIImageJPEGRepresentation(keyN, 1.0)) {
            //返回为JPEG图像。
            imageData = UIImageJPEGRepresentation(keyN, 1.0);
            suffix = @"jpg";
            contentType = @"image/jpeg";
        } else {
            //返回为png图像。
            imageData = UIImagePNGRepresentation(keyN);
            suffix = @"png";
            contentType = @"image/png";
        }
        
        [bodyData appendData:[[NSString stringWithFormat:@"--%@\r\n",@"POST_BOUNDS"] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@%ld.jpeg\"\r\n",imageName,imageName,(long)i] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:[[NSString stringWithFormat:@"Content-Type: %@\r\n",contentType] dataUsingEncoding:NSUTF8StringEncoding]];
        
        [bodyData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [bodyData appendData:imageData];
        [bodyData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        
    }
    // 添加尾部分隔线
    [bodyData appendData:[[NSString stringWithFormat:@"--%@--\r\n",@"POST_BOUNDS"] dataUsingEncoding:NSUTF8StringEncoding]];
    NSMutableURLRequest *request  = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
    [request addValue:[NSString stringWithFormat:@"multipart/form-data;boundary=%@",@"POST_BOUNDS"] forHTTPHeaderField:@"Content-Type"];
    [request addValue: [NSString stringWithFormat:@"%zd",bodyData.length] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:bodyData];
    if ([[MLandModel shareInstance] getUserInfo_MLandModel].token != nil) {
        [request setValue:[[MLandModel shareInstance] getUserInfo_MLandModel].token forHTTPHeaderField:@"token"];
    }
    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    [[manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) {
    } downloadProgress:^(NSProgress * _Nonnull downloadProgress) {
    } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
        NSLogUTF8(@"%@",responseObject);
        success(responseObject);
    }] resume];
}

你可能感兴趣的:(iOSBodyForm、multipart/form-data图片上传)