Upload multiple images in one request

前端 未结 4 992

I want to upload more than one image in single service request. How can I do that. As of now I am able to upload single image like as

 NSData *imageData = UI         


        
4条回答
  •  逝去的感伤
    2021-01-05 23:49

    Your answer is here. It's tested and I am using this below methods to upload multiple image along with other parameters.

    - (void)uploadMultipleImageInSingleRequest
    {
    
        NSString *returnString;
        NSDictionary *aParametersDic; // It's contains other parameters.
        NSDictionary *aImageDic; // It's contains multiple image data as value and a image name as key
        NSString *urlString; // an url where the request to be posted
        NSURL *url = [NSURL URLWithString:urlString];
        NSMutableURLRequest *request= [[NSMutableURLRequest alloc] initWithURL:url] ;
    
        [request setURL:[NSURL URLWithString:urlString]];
        [request setHTTPMethod:@"POST"];
        NSString *boundary = @"---------------------------14737809831466499882746641449";
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
        [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    
        NSMutableData *postbody = [NSMutableData data];
        NSString *postData = [self getHTTPBodyParamsFromDictionary:aParametersDic boundary:boundary];
        [postbody appendData:[postData dataUsingEncoding:NSUTF8StringEncoding]];
    
        [aImageDic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            if(obj != nil)
            {
                [postbody appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
                [postbody appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"PostedImage\"; filetype=\"image/png\"; filename=\"%@\"\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]];
                [postbody appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
                [postbody appendData:[NSData dataWithData:obj]];
            }
        }];
    
        [postbody appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [request setHTTPBody:postbody];
    
        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
    }
    

    .

    -(NSString *) getHTTPBodyParamsFromDictionary: (NSDictionary *)params boundary:(NSString *)boundary
    {
        NSMutableString *tempVal = [[NSMutableString alloc] init];
        for(NSString * key in params)
        {
            [tempVal appendFormat:@"\r\n--%@\r\n", boundary];
            [tempVal appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n%@",key,[params objectForKey:key]];
        }
        return [tempVal description];
    }
    

提交回复
热议问题