• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
File upload with NSURLRequest fails
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

  • Follow-Ups:
    • Re: File upload with NSURLRequest fails
      • From: Ben Lachman <email@hidden>
    • Re: File upload with NSURLRequest fails
      • From: "Tom Harrington" <email@hidden>
  • Prev by Date: Re: AppleScript Support with Plugin
  • Next by Date: re: sorting large tables
  • Previous by thread: [ANN] 10.5.2 Core Data debug library available
  • Next by thread: Re: File upload with NSURLRequest fails
  • Index(es):
    • Date
    • Thread