AFNetworking文件上传注意事项

最近用到图片,视频,语音上传,期间遇到一些问题,在此记载一下。代码如下:

NSString *urlString = [NSString stringWithFormat:@"%@%@%@",kZBServerAdd,zbStyle,requestUrl];
                NSError *err;
                NSMutableURLRequest *request = [[[AFHTTPRequestSerializer alloc] init]
                                                multipartFormRequestWithMethod:@"POST" URLString:urlString
                                                   parameters:paramDic
                                                constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
                    [formData  appendPartWithFileData:fileData
                                                 name:FILE_UPLOAD_NAME
                                             fileName:fileName
                                             mimeType:mimeType];
                } error:&err];
                request.allowsCellularAccess = YES;
                AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
                
                [op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
                    
                    NSString *jsonStr = [[NSString alloc] initWithData:operation.responseData encoding:NSUTF8StringEncoding];
                    NSError *error = nil;
                    NSDictionary *JSONDit =
                    [NSJSONSerialization JSONObjectWithData: [jsonStr dataUsingEncoding:NSUTF8StringEncoding]
                                                    options: NSJSONReadingMutableContainers
                                                      error: &error];
                    if ([[JSONDit objectForKey:@"code"] intValue] == SUCCESS) {
                        if (successBlock) {
                            successBlock(JSONDit,[[JSONDit objectForKey:@"code"] integerValue]);
                        }
                        
                    }else{
                        NSLog(@"%@",JSONDit[@"message"]);
                        if (noDataBlock) {
                            noDataBlock(JSONDit);
                        }
                    }
                    
                } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                    netFailBlock();
                }];
                
                [op start];
需要注意的 是 appendPartWithFileData这个方法的参数:

data:需要上传的数据;

name:部分服务器用来解析的字段。之前我们上传图片是本公司的服务器处理,随便写参数没有影响,但是这次用了阿里云,解析出来就有问题了,需要的数据外面多了一个字典,而这个字典的key就是这个“name”。目前这个地方我传的是@"urls[]"。就不会有外面那个字典了。

fileName:是指上传到服务器的文件名,一般是用时间戳加一些内容,但是一般服务器会替换成服务端的名字规则。尤为重要的是,这个地方需要带后缀,例如:图片就xx.png或者xx.jpg;视频就xx.mp4等;语音就xx.amr或xx.pm3等。如果不带后缀服务器会识别不出来的。

mimeType:编码类型,查看编码类型









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值