接下来在分享一下图片的上传到后台。使用AFN写的。
1 首先是单张图片的上传
- (void)upLoadPOSTImageWithImageData:(NSData *)imageData URLString:(NSString *)urlString parameters:(NSDictionary *)parameters imageKey:(NSString *)imageKey mimeType:(NSString *)mimeType
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:urlString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:imageKey fileName:@"Icon.jpeg" mimeType:mimeType];
} success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"上传成功 %@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"上传失败 %@", [error description]);
}];
}
说说这里的几个参数的作用吧:
1. - (NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(id)parameters
constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block
success:(void (^)(NSURLSessionDataTask *task, id responseObject))success
failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure;
这是AFN中的方法:
参数1:上传的URL
参数2:上传参数
参数3:上传的数据(图片等)
参数4:上传成功的回调block块
参数5:上传失败的回调block块
2,对于参数3的说明:
- (void)appendPartWithFileData:(NSData *)data name:(NSString *)nam fileName:(NSString *)fileName mimeType:(NSString *)mimeType;
- 参数1:图片的NSData
- 参数2:图片对应的上传参数
- 参数3:图片名(上传到后台的xxx.jpg)
- 参数4:图片的格式
- 多张图片的上传(批量)
#pragma mark - 利用AFNetworking将场地信息上传
- (void)upLoadAddressWithURLString:(NSString *)urlString imageParameter:(NSString *)imageParameter parameters:(NSDictionary *)parameters images:(NSArray *)images
{
// 做前期的准备处理
for (UIImage *img in images) {
if (![img isKindOfClass:[UIImage class]]) {
return;
}
}
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:urlString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
int iCount = 0;
for (UIImage *img in images) {
NSData *imgData = UIImageJPEGRepresentation(img, 1);
NSString *fileName = [NSString stringWithFormat:@"placeImg%d.jpeg", iCount];
[formData appendPartWithFileData:imgData name:imageParameter fileName:fileName mimeType:@"image/jpeg"];
iCount++;
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"上传成功 结果 = %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"上传失败 %@", [error description]);
}];
}
-参数1:上传的URL
-参数2: 图片对应的上传参数
-参数3: 其他上传参数
-参数4: 图片数组
* 其实跟单张上传差不多,只不过是将多张图片转化NSData类型后字啊拼接到formData中。大家仔细看看就回明白到。大家可以根据自己的需求进行封装,这样就可以得到很多益处的。我只是将用法记录下来。便于今后的学习用,到时候根据具体的情况在进行封装。