图像未通过IOS中的POST方法发送到PHP Web服务

时间:2014-02-15 05:17:25

标签: ios iphone objective-c post uiimage

我们有一个PHP Web服务,它将图像附加到电子邮件,因为它正在全局文件数组中收集图像。传输数据的方法是POST方法。我正在发送图像,但它没有通过POST方法收集到Web服务中。有人可以告诉我问题是在Web服务中还是在我的代码中。

以下是我用来发送图片的代码。

 NSString *tempString = [NSString stringWithFormat:@"sub1_fname=%@&sub1_lname=%@&sub1_email=%@&sub1_phone=%@&sub1_address=%@&sub1_city=%@&sub1_zip=%@&sub2_storage=%@&sub2_boxes=%@&sub2_oneman=%@&sub2_twoman=%@&sub2_heavy=%@&sub2_comments=%@&sub3_findus=%@&sub3_word=%@&sub3_praise=%@",f31fname,f31lname,f31email,f31phone,f31address,f31city,f31zip,f32storage,f32boxes,f32oneman,f32twoman,f32heavy,f32comments,f33findus,f33word,f33praise];

UIImage *image = [UIImage imageNamed:@"textlogo.png"];

NSMutableURLRequest *request =[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://ommultiengg.com/form/form3.php"]];
[request setHTTPMethod:@"POST"];

NSString *postString =[NSString stringWithFormat:@"{\"sub2_image\":\"%@\"}",image];//post the image
[request setValue:[NSString
                   stringWithFormat:@"%lu", (unsigned long)[postString length]]
 forHTTPHeaderField:@"Content-length"];//get image length
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
[request setValue:@"application/x-www-form-urlencoded; charset=utf-8"     forHTTPHeaderField:@"Content-Type"];

[request setHTTPBody:[tempString dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

[connection start];

1 个答案:

答案 0 :(得分:2)

使用以下代码,您可以传递参数以及图像数据。

NSString *urlString = [NSString stringWithFormat:@"http://myAPIName/MethodName/test.php&username=%@&password=%@&image=%@&answer=%@&question_id=%@", username, password, imageName, answer, questionID];
NSLog(@"MyURL: %@",urlString);

urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
request = [[NSMutableURLRequest alloc] init];
[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 *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

NSString *str=[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"SourceImage\"; filename=\"Image_%@\"\r\n",[imagePath lastPathComponent]];
[body appendData:[[NSString stringWithString:str] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithContentsOfFile:imagePath]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:body];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];