1
我一直在努力工作這幾天。我做了很多研究,並嘗試了很多其他的東西,但似乎沒有任何工作。發佈是看起來最接近工作的代碼。除圖像外,所有數據都會填充到數據庫中。我試圖從中獲得的是能夠發佈由UIImagePNGRepresentation(image)返回的確切數據。我假設這是二進制數據,但不是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的問題。