AFNetworking 上传使用 forKey 引用的文件

Posted

技术标签:

【中文标题】AFNetworking 上传使用 forKey 引用的文件【英文标题】:AFNetworking upload a file referenced with a forKey 【发布时间】:2011-11-04 21:34:37 【问题描述】:

我需要向网络服务器发送用户在我的应用中插入的一些信息

我使用的是 ASIHTTPRequest,但我在使用 ios 5 时遇到了一些问题,所以我决定迁移到 AFNetworking

这是我目前写的代码...

AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://theserver.com/upload.php"]];
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setObject:[fieldName text] forKey:@"name"];
[parameters setObject:[fieldSurname text] forKey:@"surname"];

现在我需要添加一个包含图像的 NSData 对象,它应该被 forKey:@"attachment" 引用

我应该写什么?我正在使用 ASIHTTPRequest

[request setData:myNSData withFileName:@"image.jpg" andContentType:@"application/octet-stream" forKey:@"attachment"];

但是对于 AFNetworking,我不知道应该写什么,而且这些示例对我没有帮助

非常感谢!

【问题讨论】:

【参考方案1】:

您需要使用“multipartFormRequestWithMethod” - 例如:

NSMutableURLRequest *request = [[AFHTTPClient sharedClient] multipartFormRequestWithMethod:@"POST" path:@"/upload.php" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) 
  [formData appendPartWithFileData:data mimeType:@"image/jpeg" name:@"attachment"];
];

【讨论】:

谢谢!!但是我应该将“NSMutableDictionary *parameters”传递给它,而不是“parameters = nil”,对吗?当我声明“AFHTTPClient *client”时......我需要插入整个路径还是只插入“theserver.com”? 是的,你可以传入你的参数。创建 AFHTTPClient 时,只需传递基本 url - 即。 theserver.com(带有 http://,*** 似乎有意隐藏) 数据是 UIImage 吗?有关系吗? @mkral 数据是一个 NSData。要将 UIImage 转换为 NSData,请查看 UIImageJPEGRepresentation()。

以上是关于AFNetworking 上传使用 forKey 引用的文件的主要内容,如果未能解决你的问题,请参考以下文章

ASIHTTPRequest 方法 AFNetworking 的替代方法

使用 AFNetworking 上传多张图片

UIPregressView 使用 AFNetWorking 上传图像

使用 AfNetworking 上传图片 [重复]

使用 AFNetworking 快速上传多张图片

如何使用 AFNetworking 上传多个文件