我使用setObject forKey创建了一个包含数组和字符串以及其他客户端信息的NSDictionary。当我对数据进行NSLog时,一切看起来都很棒,格式正如它所假设的那样。我还将我的NSDictionary转换为NSData:
NSData *userData = [NSJSONSerialization dataWithJSONObject:userDict options:NSJSONWritingPrettyPrinted error:&error];
我需要知道的是如何使用POST将其上传到服务器。我找到了以下代码段来上传照片。我的问题是我可以简单地使用我的NSDictionary作为参数(请求中的参数),它有点大。如果没有,我如何发送我的NSData对象userData?我非常喜欢AFNetworking,并且一直专门用它来满足我的所有下载需求。这是我第一次上传对象。 感谢
NSData *imageData = UIImagePNGRepresentation(pageImage);
AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://www.SERVER.com"]];
//You can add POST parameteres here
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
author, @"author",
title, @"title",
nil];
NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"/PATH/TO/WEBSERVICE.php" parameters:params constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
//This is the image
[formData appendPartWithFileData: imageData name:@"cover_image" fileName:@"temp.png" mimeType:@"image/png"];
}];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
//Setup Upload block to return progress of file upload
[operation setUploadProgressBlock:^(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
float progress = totalBytesWritten / (float)totalBytesExpectedToWrite;
NSLog(@"Upload Percentage: %f %%", progress*100);
}];
//Setup Completeion block to return successful or failure
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *response = [operation responseString];
NSLog(@"response: [%@]",response);
//Code to run after webservice returns success response code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", [operation error]);
//Code to Run if Failed
}];
[operation start];
答案 0 :(得分:0)
我不确定我是否完全理解你的问题,但无论如何我都会试一试。
我的问题是我可以简单地使用我的NSDictionary作为参数(请求中的参数),它有点大。
我是这么认为的。试试吧......最后,那些数组将被转换为发送到服务器的数据,所以如果服务器能够处理它,那就应该没有问题。
如果没有,我如何发送我的NSData对象userData?
您发送的数据应在您发布的代码指定imageData
的位置提供。请记住,如果您上传的内容不是文件(您提及NSData),那么您可能需要使用appendPartWithFormData:name
。这再次取决于您的服务器端。
希望这能澄清一些事情。