通过 AFNetworking 2.0 上传 iOS 图像

Posted

技术标签:

【中文标题】通过 AFNetworking 2.0 上传 iOS 图像【英文标题】:iOS Image upload via AFNetworking 2.0 【发布时间】:2013-10-09 01:31:12 【问题描述】:

我一直在寻找新的 AFNetworking 2.0 上传图像的示例。 但是我碰壁了,无法弄清楚代码有什么问题。 所以这是我使用的代码

NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];


AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

NSURL *URL = [NSURL URLWithString:@"http://myserverurl.com"];

NSURLRequest *request = [NSURLRequest requestWithURL:URL]; 

NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromData:imageData progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) 
    if (error) 
        NSLog(@"Error: %@", error);
     else 
        NSLog(@"Success: %@ %@", response, responseObject);
    
];
[uploadTask resume];

TIA

【问题讨论】:

【参考方案1】:

我最终使用了多部分请求

UIImage *image = [info valueForKey:UIImagePickerControllerOriginalImage];
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @@"foo": @"bar";
[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 
    [formData appendPartWithFormData:imageData name:@"image"];
 success:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"Success: %@", responseObject);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"Error: %@", error);
];

【讨论】:

appendPartWithFileData:imageData name:@"image" error:nil] 不再工作了,我猜。你应该使用:[formData appendPartWithFormData:imageData name:@"image"]; ...但它仍然对我不起作用:/ 如果以后不使用 fileURl,为什么还要费心呢? @raistlin appendPartWithFileData 也为我工作。见***.com/a/20190352/1933185 @raistlin 我认为您的意思是“filePath”,这里似乎确实没有使用它。 @ordinaryman09 你知道如何在图片中添加 Header 值吗?

以上是关于通过 AFNetworking 2.0 上传 iOS 图像的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 2.0 多部分/表单数据上传到 mySQL

AFNetworking 2.0 spring MVC 上传文件

AFNetworking 2.0 图片上传和 JSON 返回错误

使用 AFNetworking 2.0 上传进度

iOS开发通过AFNetworking上传图片到服务器

在单个 PHP 中使用 AFNetworking 2.0 上传图像和信息(两者)