使用AFNetWorking传文件和参数:
#pragma mark - 上传问题图片
- ( void )uploadQuestionImage:( UIImage *)questionImage withQuestionID:( NSString *)questionID{
AppDelegate * app = [ UIApplication sharedApplication ]. delegate ;
NSData *imageData = UIImageJPEGRepresentation ( self . questionImage , 1.0 );
NSMutableDictionary * parameters = [ NSMutableDictionary dictionary ];
[parameters setObject :questionID forKey : @"exID" ];
NSMutableURLRequest *request = [[ AFHTTPClient clientWithBaseURL :[ NSURL URLWithString : dUrl_serverAddress ]] multipartFormRequestWithMethod : @"POST" path : @"Path/UploadTitleImage/" parameters :parameters constructingBodyWithBlock : ^( id < AFMultipartFormData >formData) {
[formData appendPartWithFileData :imageData name : @"image" fileName : @"quePic.jpg" mimeType : @"image/jpeg" ]; // 图片
}];
AFHTTPRequestOperation *operation = [[ AFHTTPRequestOperation alloc ] initWithRequest :request];
[operation setUploadProgressBlock :^( NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
float progress = totalBytesWritten / ( float )totalBytesExpectedToWrite;
NSLog ( @"Sent Pic %f .." ,progress);
}];
[operation start ];
[operation setCompletionBlockWithSuccess :^( AFHTTPRequestOperation *operation, id responseObject) {
NSLog ( @" QuestionPictureUploadDidFinish: %@ " ,[operation responseString ]);
NSString * response =[operation responseString ];
NSError *error = nil ;
NSData *fileIdData = [response dataUsingEncoding : NSUTF8StringEncoding ];
NSDictionary *dicRoot = [ NSJSONSerialization JSONObjectWithData :fileIdData options : NSJSONReadingMutableLeaves error :&error];
NSDictionary *dictfil = [dicRoot objectForKey : @"json" ];
int state = [[dictfil valueForKey : @"state" ] intValue ];
// 上传成功
if (state== 1 )
{
NSString *msg = [ NSString stringWithFormat : @"%@" , [dictfil objectForKey : @"msg" ]];
[app showMsg :msg];
}
// 上传失败
else
{
NSString *msg = [ NSString stringWithFormat : @"%@" , [dictfil objectForKey : @"msg" ]];
[app showMsg :msg];
}
} failure :^( AFHTTPRequestOperation *operation, NSError *error) {
NSLog ( @" 上传失败 error: %@" , operation. responseString );
[app showMsg : @" 上传失败 " ];
}];
}