2017-11-08 7 views
0

서버에 여러 개의 이미지를 POST하려고하는데 서버로가는 이미지가 하나뿐입니다. 여러 이미지를 저장하려고합니다. 내 코드가 내가 잘못한 곳을 말해 준다. 여러 이미지를 게시하는 예를 보았습니다.POST하는 방법 서버에 여러 개의 이미지가 있습니까?

Upload multiple images in one request

감사

NSData *imageData1 = UIImageJPEGRepresentation(photo1, 0.8); 
    NSData *imageData2 = UIImageJPEGRepresentation(photo2, 0.8); 
    NSData *imageData3 = UIImageJPEGRepresentation(photo3, 0.8); 
    NSData *imageData4 = UIImageJPEGRepresentation(image1, 0.8); 
    NSData *imageData5 = UIImageJPEGRepresentation(image2, 0.8); 

    NSString *returnString; 
    NSDictionary *aParametersDic= @{@"input_100":userIDStr,@"input_1":regstrationNumberStr,@"input_88":regsDateStr,@"input_2":nameofHealthSeekerString,@"input_83":ageString1,@"input_84":weightStr,@"input_85":heightStr,@"input_3":motherNameStr,@"input_4":addressStr,@"input_5":phonenumberStr,@"input_95":alternativeNumberStr,@"input_6":emailStr,@"input_7":whatsAppStr,@"input_96":idProofStr1,@"input_8":professionStr1,@"input_9":maritialStatusStr,@"input_11":presentHistoryStr,@"input_12":pastHistoryStr,@"input_13":familyHistoryStr,@"input_15":sleepStr,@"input_16":freshStatusStr,@"input_17":sleepPillsStr,@"input_20":DietStr,@"input_21":spiceStr,@"input_23":apetiteStr,@"input_25":foodChewingHabbit,@"input_27":breakfastItemStr,@"input_29":lunchItemStr,@"input_31":eveningItemStr,@"input_33":dinnerItemStr,@"input_94":mentalStatus,@"input_36":relationStr,@"input_38":constipationStr,@"input_39":urinaryStr,@"input_41":habitStr,@"input_45":tasteOfMouthStr,@"input_47":sexualStr,@"input_49":fatiqueStr,@"input_51":regularExerciseStr,@"input_53":workingHoursStr,@"input_55":favDishStr,@"input_57":otherDetailsStr,@"input_59":femalStatsStr,@"input_60":progressReportStr,@"input_77":referredByStr,@"input_75_1":hearAboutStr,@"input_78":willingStr,@"input_87":_mentorNameTextField.text,@"input_90":_phonenumberTextField.text,@"input_91":_addressTextField.text}; 
    // It's contains other parameters. 
    NSDictionary *aImageDic = @{@"input_93":imageData1,@"input_98":imageData2,@"input_92":imageData3,@"input_82":imageData4,@"input_97":imageData5 }; // It's contains multiple image data as value and a image name as key 
    NSString *urlString = [NSString stringWithFormat:@"http://nse/apis/custom/?api=1&page=user_patient_form"]; // 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 = @"---------------------------14737809831e45466499882746641449"; 
    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]; 
    NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:returnData options:kNilOptions error:nil]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     if([[jsonDict objectForKey:@"status"]boolValue]) 
     { 
      NSLog(@"data saved successfully"); 
     } 
     else 
     { 
      NSLog(@"Error in saving the data"); 
     } 
    }); 

PHP 응답이 returnString의
인쇄 설명입니다

:

Array 
(
    [PostedImage] => Array 
     (
      [name] => input_82 
      [type] => image/jpeg 
      [tmp_name] => /tmp/phpIfld44 
      [error] => 0 
      [size] => 225219 
     ) 
) 

답변

0

보십시오.

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setHTTPShouldHandleCookies:NO]; 
[request setTimeoutInterval:60]; 
[request setHTTPMethod:@"POST"]; 
    NSString *boundary = @"------VohpleBoundary4QuqLuM1cE5lMwCy"; 
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary]; 
[request setValue:contentType forHTTPHeaderField: @"Content-Type"]; 

NSMutableData *body = [NSMutableData data]; 
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; 
[parameters setValue:@"IOS Testing" forKey:@"subject"]; 
[parameters setValue:@"Message" forKey:@"message"]; 
for (NSString *param in parameters) { 
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", param] dataUsingEncoding:NSUTF8StringEncoding]]; 
[body appendData:[[NSString stringWithFormat:@"%@\r\n", [parameters objectForKey:param]] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

    NSMutableArray *multipleArray=[[NSMutableArray alloc] init]; 
[multipleArray addObject:[UIImage imageNamed:@"images.jpeg"]]; 
[multipleArray addObject:[UIImage imageNamed:@"pic3.png"]]; 
    for (int i=0; i<multipleArray.count;i++) 
{ 
NSData *imageData; 
imageData = UIImageJPEGRepresentation([multipleArray objectAtIndex:i], 1.0); 
if (imageData) 
{ 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", @"uploaded_file[]"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Type:image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[NSData dataWithData:imageData]]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    } 
    else 
    { 
    [body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
} 
} 

[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setHTTPBody:body]; 
[request setURL:[NSURL URLWithString:BASEURL]]; 
[NSURLConnection sendAsynchronousRequest:request 
           queue:[NSOperationQueue mainQueue] 
        completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
         NSHTTPURLResponse* httpResponse = 
    (NSHTTPURLResponse*)response; 
         if ([httpResponse statusCode] == 200) { 
          NSLog(@"success"); 
         } 

}]; 
} 
+0

이 하나를 시도하고 허용 된대로이 답변을 확인하십시오. – Mukesh

+0

답변을 수락 된 것으로 표시해야합니다. @ user7356913 – Mukesh

0

당신이 코드를 사용할 수 있습니다가. 테스트를 거쳤으며 다른 매개 변수와 함께 여러 이미지를 업로드하는 데이 메서드를 사용하고 있습니다.

if([arrImage count]) 
{ 
    for (int y = 0; y < [arrImage count]; y++) 
    { 
     //-- Convert string into URL 
     NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:[NSURL URLWithString:UPLOADDATA_URL]]; 

     [request setHTTPMethod:@"POST"]; 
     NSString *boundary = @"14737809831466499882746641449"; 
     NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
     [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

     //-- Append data into posr url using following method 
     NSMutableData *body = [NSMutableData data]; 


     //Project ID 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",@"project_id"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"%@",projectId] dataUsingEncoding:NSUTF8StringEncoding]]; 

     //Date 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",@"date"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"%@",dateString] dataUsingEncoding:NSUTF8StringEncoding]]; 

     //User ID 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",@"user_id"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"%@",userID] dataUsingEncoding:NSUTF8StringEncoding]]; 

     //Comment 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",@"comment"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"%@",projectNoteTextView.text] dataUsingEncoding:NSUTF8StringEncoding]]; 

     //Task ID 
     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",@"task_assign_id"] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[[NSString stringWithFormat:@"%@",task_Id] dataUsingEncoding:NSUTF8StringEncoding]]; 

     [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

     image_name =[NSString stringWithFormat:@"%@%d",@"image",y]; 
     NSLog(@"IMAGE NAME:%@", image_name); 

     UIImage* imageFile = [arrImage objectAtIndex:y]; 

     CGSize newSize = CGSizeMake(500.0f, 500.0f); 
     UIGraphicsBeginImageContext(newSize); 
     [imageFile drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; 
     UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

     // NSData *dataImg = [NSData dataWithData:UIImagePNGRepresentation(newImage)]; //compressed Imge 
     // NSData *dataImg = [NSData dataWithData:UIImagePNGRepresentation([arrImage objectAtIndex:y])]; 

     NSLog(@"Images, send to server:%@", dataImg); 
     NSLog(@"added %i", y+1); 

     [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"site_image\"; filename=\"%@\"\r\n",image_name] dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
     [body appendData:[NSData dataWithData:dataImg]]; 

     [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

     //-- Sending data into server through URL 
     [request setHTTPBody:body]; 

     //-- Getting response form server 
     NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 

     //-- JSON Parsing with response data 
     result = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil]; 
     NSLog(@"Result = %@",result); 
    } 

    [self showAlertMessage:[result objectForKey:@"message"]]; 
} 
+0

답을 확인 했습니까? – Mukesh

+0

image_name = [NSString stringWithFormat : @ "% @ % d", @ "image", y]; NSLog (@ "이미지 이름 : % @", image_name); UIImage * imageFile = [arrImage objectAtIndex : y]; 여기에 쓸 내용 nsdata 형식의 이미지가 있습니까? – user7356913

+0

다음을 사용하여 NSData를 UiImage로 변경할 수 있습니다. NSData * data = yourImageData; UIImage * image = [[UIImage alloc] initWithData : data]; – Mukesh