File upload with NSURLRequest fails
File upload with NSURLRequest fails
- Subject: File upload with NSURLRequest fails
- From: "Tom Harrington" <email@hidden>
- Date: Thu, 13 Mar 2008 14:50:40 -0600
I'm trying to upload a file with the NSURL* API, but on the server end
the PHP code is unable to decode the $_FILES array. The PHP code
works fine when posted from an HTML form (and from clients on other
platforms).
Traffic sniffed on the wire looks good as far as I can tell, so what
would be the problem? The code in question follows.
NSString *urlString = @"http://server:8080/php/post.php";
NSURL *url = [NSURL URLWithString:urlString];
NSString *requestMethod = @"POST";
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[req setHTTPMethod:requestMethod];
NSString *headerFieldName;
NSString *headerFieldValue;
NSString *boundary = @"-----------------------------1234567890";
headerFieldName = @"Content-Type";
headerFieldValue = [NSString stringWithFormat:@"multipart/form-data;
boundary=%@", boundary];
[req addValue:headerFieldValue forHTTPHeaderField:headerFieldName];
NSString *phone = @"7195554321";
NSDate *currentDate = [NSDate date];
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
NSString *dateString = [dateFormatter stringFromDate:currentDate];
// Will look something like this: form-data; name="file";
filename="7195554321_1_20080311132327_jpg"
headerFieldValue = [NSString stringWithFormat:@"form-data;
name=\"file\"; filename=\"%@_1_%@_jpg\"", phone, dateString];
NSMutableData *postBody = [NSMutableData data];
// Add ----boundary
[postBody appendData:[[NSString stringWithFormat:@"%@\r\n", boundary]
dataUsingEncoding:NSUTF8StringEncoding]];
// Add form-data with filename
[postBody appendData:[[NSString
stringWithFormat:@"Content-Disposition: %@\r\n", headerFieldValue]
dataUsingEncoding:NSUTF8StringEncoding]];
// Add content-type
[postBody appendData:[[NSString stringWithString:@"Content-Type:
null\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
// Add image data
[postBody appendData:imageData];
// Add ----boundary--
[postBody appendData:[[NSString stringWithFormat:@"\r\n%@--\r\n",
boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[req setHTTPBody:postBody];
NSHTTPURLResponse *res = nil;
NSError *err = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:req
returningResponse:&res
error:&err];
--
Tom Harrington
email@hidden
AIM: atomicbird1
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden