我知道这似乎特定于手头的问题,但是,这是我试图避免可可豆荚的可怕 UploadCare 使用,其中包含大量(而且相当过时)依赖项,只是上传文件(然后下载它日后)。
我正在努力翻译 cURL 命令中的“-F”选项。我知道他们指定了 HTTP 多部分 POST 数据,但是很难将其转换为带有图片文件的 NSMutableData。我不断收到 403 状态码。
cURL 命令是:
curl -F "UPLOADCARE_PUB_KEY=e84a031b3da1g560d56d" \
-F "UPLOADCARE_STORE=1" \
-F "file=@aaronmillman.jpg" https://upload.uploadcare.com/base/
我目前的尝试是:
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];
我对 NSMutableData 做错了什么?
第二个相关的问题是:是否值得使用 Objective-C lib curl 包装器?