AFN框架上传录音文件。 AFN文件上传音频上传 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只能是使用POST方式来提交了,如下是我封装的一个方法+(void)multipartRequestWithPath:(NSString *)path parameters:(NSDictionary *)parameters files:(NSArray *)files block:(void (^)(id json, BOOL success))completionBlock{ NSURL *url = [NSURL URLWithString:REAL_ServerURL]; AFHTTPClient *httpClient =[[AFHTTPClient alloc] initWithBaseURL:url]; NSURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:path parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) { for (int pos = 0; pos < files.count ; pos++) { SYFile *currentFile = [files objectAtIndex:pos]; [formData appendPartWithFileData:currentFile.content name:currentFile.name fileName:currentFile.fileName mimeType:currentFile.mimeType.name]; } }]; #ifdef DEBUG NSLog(@"Request: %@", request.URL); NSLog(@"Parameters: %@", parameters); NSLog(@"Files: %@", files);#endif AFHTTPRequestOperation *operation=[[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { NSError *error = nil; id jsonResult =[NSJSONSerialization JSONObjectWithData:operation.responseData options:NSJSONReadingMutableContainers error:&error]; completionBlock(jsonResult, [status boolValue]); } failure:^(AFHTTPRequestOperation *operation, NSError *error) {#ifdef DEBUG NSLog(@"Access server error:%@,because %@",error,operation.request);#endif }]; NSOperationQueue *queue=[[NSOperationQueue alloc] init]; [queue addOperation:operation];}////////SYFile.的定义typedef NS_ENUM(NSUInteger, MimeType) { MimeTypePDF = 1, MimeTypeImagePNG, MimeTypeAudioM4A};@interface SYFile : NSObject@property (strong, nonatomic) NSData *content;@property (strong, nonatomic) EnumMimeType *mimeType;@property (strong, nonatomic) NSString *name;@property (strong, nonatomic) NSString *fileName;@end////////调用 SYFile *file; if (audio != nil) { file = [SYFile new]; [file setName:@"audio_file"]; [file setMimeType:[EnumMimeType mimeTypeAudioM4A]]; [file setFileName:@"newFileAudio.m4a"]; [file setContent:audio]; }[NetworkHelper multipartRequestWithPath:path parameters:parameters files:@[file] completionBlock:^(id json, BOOL success) { NSLog(@"success"); }] {\"voice\":\"%@\",\"playtime\":\"%d\"} 文件和长度,这是必须的 ios系统下的box2d屏幕有边界 申请苹果开发者传真发布过去怎么办? 怎样找出NSString中字母 数字 中文 特殊字符的个数? 关于Textfield自动获取焦点的问题 求助大家一个关于UIpickerView的问题 求助:关于百度地图的 UIButton 创建的button的文本怎么换行 关于身份证扫描 给 label 添加背景图片问题. iOS IBAction 诡异问题, 求解答呢 在ios的界面中,怎么将导航栏作为根视图 对tableview的cell的操作
+(void)multipartRequestWithPath:(NSString *)path parameters:(NSDictionary *)parameters files:(NSArray *)files block:(void (^)(id json, BOOL success))completionBlock{
NSURL *url = [NSURL URLWithString:REAL_ServerURL];
AFHTTPClient *httpClient =[[AFHTTPClient alloc] initWithBaseURL:url];
NSURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:path parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
for (int pos = 0; pos < files.count ; pos++) {
SYFile *currentFile = [files objectAtIndex:pos];
[formData appendPartWithFileData:currentFile.content name:currentFile.name fileName:currentFile.fileName mimeType:currentFile.mimeType.name];
}
}];
#ifdef DEBUG
NSLog(@"Request: %@", request.URL);
NSLog(@"Parameters: %@", parameters);
NSLog(@"Files: %@", files);
#endif
AFHTTPRequestOperation *operation=[[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSError *error = nil;
id jsonResult =[NSJSONSerialization JSONObjectWithData:operation.responseData options:NSJSONReadingMutableContainers error:&error];
completionBlock(jsonResult, [status boolValue]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
#ifdef DEBUG
NSLog(@"Access server error:%@,because %@",error,operation.request);
#endif
}];
NSOperationQueue *queue=[[NSOperationQueue alloc] init];
[queue addOperation:operation];
}
////////SYFile.的定义
typedef NS_ENUM(NSUInteger, MimeType) {
MimeTypePDF = 1,
MimeTypeImagePNG,
MimeTypeAudioM4A
};
@interface SYFile : NSObject@property (strong, nonatomic) NSData *content;
@property (strong, nonatomic) EnumMimeType *mimeType;
@property (strong, nonatomic) NSString *name;
@property (strong, nonatomic) NSString *fileName;@end////////调用
SYFile *file;
if (audio != nil) {
file = [SYFile new];
[file setName:@"audio_file"];
[file setMimeType:[EnumMimeType mimeTypeAudioM4A]];
[file setFileName:@"newFileAudio.m4a"];
[file setContent:audio];
}
[NetworkHelper multipartRequestWithPath:path parameters:parameters files:@[file] completionBlock:^(id json, BOOL success) {
NSLog(@"success");
}]