iOS开发需要上传图片,常用功能。使用POST请求
我使用AFN,一般都是配置请求头,
google 了很久, 没收获。
请求体里面放图片二进制数据。
现在后台要求,后台是Java, 上传图片需要键值匹配?
不会了!
[formData appendPartWithFileData:imageData name: @"photoFile" fileName:[NSString stringWithFormat:@"%@%@.jpeg",dateString,@(idx)] mimeType:@"image/jpeg"];
//其中name很重要,很重要,是后台上传的key,这个是后台规定的,要跟后台协商,不同的后台,可能写图片上传的key,就不一样,这个要问后台了,我就是没有跟后台协商,
我设置name后, 经后台检测,上传成功了。
AFN 报错。
domain: @"com.alamofire.error.serialization.response"
这个错误,我堵了半天,没堵上。
具体: 我在AFN 的
@implementation AFJSONResponseSerializer
处理 类型,感觉 失败了。
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
感觉这个key -photoFile, 后台搞显式了。
跟后台协调,不要key,不太懂。被怼晕了,怎么说服后台?
+ (void)requestForXppWithImageData:(NSData *)data success:(void (^)(NSDictionary *))success fail:(void (^)(NSError *))fail
{
AFHTTPSessionManager *manager = [self requestManager];
[manager POST:@"http://11.11.11.11:8888/xxx/xxx/xxx"
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileData:data name:@"" fileName:@"" mimeType:@""];
}
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (responseObject)
{
NSString *data = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
NSDictionary *dic = [self dicFromJson:data];
if (dic){ success(dic);}
}
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (error){ fail(error);}
}];
}
这个是我写的,当初遇到了和你一样的问题。