Skip to content

Instantly share code, notes, and snippets.

@minase
Created June 9, 2009 23:42
Show Gist options
  • Save minase/126905 to your computer and use it in GitHub Desktop.
Save minase/126905 to your computer and use it in GitHub Desktop.
-(NSMutableData*) createHTTPPostBodyWithParameters:(NSDictionary*)params boundary:(NSString*)boundary
{
NSMutableData *paramsData = [NSMutableData new];
NSString *enter = @"\r\n";
for(id key in params) {
[paramsData appendData:[[NSString stringWithFormat:@"--%@%@", boundary, enter] dataUsingEncoding:NSUTF8StringEncoding]];
[paramsData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"", key] dataUsingEncoding:NSUTF8StringEncoding]];
// File
if(key == @"file") {
id filePath = [params valueForKey:key];
id fileName = [filePath lastPathComponent];
id fileData = [NSData dataWithContentsOfFile:filePath];
[paramsData appendData:
[[NSString stringWithFormat:@"; filename=\"%@\"%@", fileName, enter] dataUsingEncoding:NSUTF8StringEncoding]];
[paramsData appendData:
[[NSString stringWithFormat:@"Content-Type: application/octet-stream%@%@", enter, enter] dataUsingEncoding:NSUTF8StringEncoding]];
[paramsData appendData:fileData];
NSLog(@"%d", [fileData length]);
// not File
} else {
[paramsData appendData:[[NSString stringWithFormat:@"%@%@", enter, enter] dataUsingEncoding:NSUTF8StringEncoding]];
[paramsData appendData:[[params valueForKey:key] dataUsingEncoding:NSUTF8StringEncoding]];
}
[paramsData appendData:[[NSString stringWithFormat:@"%@", enter] dataUsingEncoding:NSUTF8StringEncoding]];
}
// source
[paramsData appendData:[[NSString stringWithFormat:@"--%@%@", boundary, enter] dataUsingEncoding:NSUTF8StringEncoding]];
[paramsData appendData:[@"Content-Disposition: form-data; name=\"source\"" dataUsingEncoding:NSUTF8StringEncoding]];
[paramsData appendData:[[NSString stringWithFormat:@"%@%@", enter, enter] dataUsingEncoding:NSUTF8StringEncoding]];
[paramsData appendData:[[NSString stringWithFormat:@"%@%@", [USER_AGENT valueForKey:@"name"], enter] dataUsingEncoding:NSUTF8StringEncoding]];
// term
[paramsData appendData:[[NSString stringWithFormat:@"--%@--", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
return paramsData;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment