I know this may seem specific to this problem, however I am trying to avoid the terrible use of UploadCare for cocoa pods, which contains a significant (and rather outdated) number of dependencies, just to upload the file (and then upload it later).
I am trying to translate the '-F' options to the cURL command. I understand that they specify HTTP multipart POST data, but converting this to NSMutableData with an attached image file is difficult. I keep getting the 403 status code.
CURL command:
curl -F "UPLOADCARE_PUB_KEY=e84a031b3da1g560d56d" \
-F "UPLOADCARE_STORE=1" \
-F "file=@aaronmillman.jpg" https://upload.uploadcare.com/base/
My current attempt:
NSMutableData *body = [NSMutableData data];
NSData *imageData = UIImageJPEGRepresentation(image, 0.6);
if (imageData) {
[body appendData:[@"UPLOADCARE_PUB_KEY=e84a031b3da1g560d56d" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"UPLOADCARE_STORE=1" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"file="] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:imageData];
}
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];
NSURL *url = [NSURL URLWithString:baseUrl];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = imageData;
NSURLSessionDataTask *uploadTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"%@",response);
}];
[uploadTask resume];
What am I doing wrong with NSMutableData?
A second and related question is: is it worth using the objective-C lib curl wrapper at all?