在ios上的多部分表格/数据上传
问题描述:
<form method="post" action="upload.php?u=test&p=test" name="FrmUpload" autocomplete="off" enctype="multipart/form-data">
<input type="file" name="file" id="file" onchange="document.forms[0].submit();"/>
</form>
上述代码在html中有效。我想在AFnetworking多的音频文件上传到做:这是我的等效IOS代码:在ios上的多部分表格/数据上传
NSDictionary *dic = @{@"id":@"file"};
[[RequestOperationManager sharedManager] POST:@"my url string" parameters:dic
constructingBodyWithBlock:^(id<AFMultipartFormData> formData){
NSError *error = nil;
[formData appendPartWithFileURL:[NSURL fileURLWithPath:@"my file path"] name:@"file" fileName:file mimeType:@"audio/aac" error:&error];
}success:^(AFHTTPRequestOperation *operation, id responseObject){
} failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"%d : %@", error.code, error.description);
}
}];
它会返回错误:
错误域= NSCocoaErrorDomain代码= 3840“的操作couldn”吨完成(可可错误3840)”(JSON文本不与阵列或对象和选项,允许片段未设置启动。)
答
- (无效)uploadAudio { AFHTTPRequestOperationManager *经理= [[AFHTTPRequestOperation经理页头] *
initWithBaseURL:[NSURL URLWithString:@ “http://server.url”];
NSData *imageData = UIImageJPEGRepresentation(self.avatarView.image, 0.5);
NSDictionary *parameters = @{@"username": self.username, @"password" : self.password};
AFHTTPRequestOperation *op = [manager POST:@"rest.of.url" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//do not put image inside parameters dictionary as I did, but append it!
[formData appendPartWithFileData:imageData name:paramNameForImage fileName:@"photo.jpg" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
[op start];
}
我觉得有些细节必须失去了......像乌尔网址......或钥匙.....