Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

File upload with NSURLRequest fails



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:
http://lists.apple.com/mailman/options/cocoa-dev/email@hidden

This email sent to email@hidden



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.