저는 지금 며칠 동안이 작업을 해왔습니다. 나는 많은 연구를했고 많은 다른 것들을 시도했지만 아무것도 작동하지 않는 것 같습니다. 게시 된 코드는 작업에 가장 가까운 코드입니다. 모든 데이터는 이미지를 제외하고 데이터베이스에 채워집니다. 이게에서 얻으려고 노력하는 것은 UIImagePNGRepresentation (이미지)에 의해 반환되는 정확한 데이터를 게시 할 수있게하는 것입니다. 나는 이것이 바이너리 데이터라고 가정하지만 100 %는 아니다. 어떤 도움을 주시면 감사하겠습니다. 감사!iPhone : 다른 양식 데이터와 함께 UIImage의 이진 데이터를 웹에 게시하십시오.
-(void)sendFormData:(NSArray*)data{
// add boundary
NSString *[email protected]"----Boundary+AaB03x";
// create array of php vars
NSArray *phpVariables=[NSArray arrayWithObjects:@"username",@"picture",@"firstName",@"lastName",@"phone",@"email",@"password",nil];
// create body data
NSMutableData *body=[[NSMutableData alloc] init];
// dictionary of fields
NSMutableDictionary *formFields=[[NSMutableDictionary alloc] init];
// fill dictionary
for(int i=0; i<[data count]-1; i++) [formFields setObject:[data objectAtIndex:i] forKey:[phpVariables objectAtIndex:i]];
NSMutableURLRequest *urlRequest=[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"MY_URL"]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:[NSString stringWithFormat:@"multipart/form-data, boundary=%@",boundary] forHTTPHeaderField:@"Content-Type"];
NSEnumerator *dictionaryEnumerator=[formFields keyEnumerator];
NSString *currentKey=nil;
while((currentKey=[dictionaryEnumerator nextObject])){
id currentValue=[formFields objectForKey:currentKey];
if([currentValue class]==[UIImage class]){
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"myphoto.png\"\r\n",currentKey] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: image/x-png\r\n" dataUsingEncoding:NSASCIIStringEncoding]];
[body appendData:[@"Content-Transfer-Encoding: binary\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:UIImagePNGRepresentation(currentValue)];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
}
else{
[body appendData:[[NSString stringWithFormat:@"--%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n",boundary,currentKey,currentValue] dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]];
}
}
[urlRequest setHTTPBody:body];
NSURLResponse *response;
NSError *error;
NSData *serverResponseData=[NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];
[body release];
[formFields release];
NSString *serverResponseString=[[NSString alloc] initWithData:serverResponseData
encoding:NSUTF8StringEncoding];
[self performSelectorOnMainThread:@selector(showServerResponseWithString:)
withObject:serverResponseString
waitUntilDone:FALSE];
}
UPDATE :
위의 코드는 잘 작동하고 실제로 PHP에 문제가 있었다.