一:AFNetworking的文件上传:
主要几个以下类似
- (BOOL)appendPartWithFileURL:(NSURL *)fileURL name:(NSString *)name error:(NSError * __autoreleasing *)error;
二:主要代码:
//配置文件上传 //图片data 上传 //UIImage *upImage = [UIImage imageNamed:@"testImage.png"]; //NSData *imageData = UIImagePNGRepresentation(upImage); //文件file上传,上传mp3音乐文件 //NSString *theUpFilePath = [NSString stringWithFormat:@"%@testMusic.mp3",NSTemporaryDirectory()]; //上传个图片文件; NSString *theImagePath = [[NSBundle mainBundle] pathForResource:@"testImage" ofType:@"png"]; self.uploadFileClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:kCOCOA_FileUPload]]; NSMutableURLRequest *fileUpRequest = [_uploadFileClient multipartFormRequestWithMethod:@"POST" path:@"" parameters:nil constructingBodyWithBlock:^(id formData) { //[formData appendPartWithFileData:imageData name:@"file" fileName:@"testImage" mimeType:@"image/png"]; //[formData appendPartWithFileURL:[NSURL fileURLWithPath:theUpFilePath isDirectory:NO] name:@"file" fileName:@"testMusic.mp3" mimeType:@"audio/mpeg3" error:nil]; [formData appendPartWithFileURL:[NSURL fileURLWithPath:theImagePath] name:@"file" error:nil]; }]; self.fileUploadOp = [[AFHTTPRequestOperation alloc]initWithRequest:fileUpRequest];
三:文件上传Demo
1 #pragma mark 文件上传; 2 3 //文件的 mine_type http://www.iana.org/assignments/media-types/media-types.xhtml 4 5 UIProgressView *uploadFileProgressView = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleDefault]; 6 uploadFileProgressView.center = CGPointMake(self.view.center.x, 100); 7 uploadFileProgressView.progress = 0; 8 uploadFileProgressView.progressTintColor = [UIColor blueColor]; 9 uploadFileProgressView.trackTintColor = [UIColor grayColor];10 [self.view addSubview:uploadFileProgressView];11 12 13 //开始14 UIButton *startUp = [UIButton buttonWithType:UIButtonTypeRoundedRect];15 startUp.frame = CGRectMake(80, 120, 150, 30);16 [startUp setTitle:@"开始上传" forState:UIControlStateNormal];17 [startUp addTarget:self action:@selector(startUploadOP) forControlEvents:UIControlEventTouchUpInside];18 19 20 [self.view addSubview:startUp];21 22 23 //配置文件上传24 25 //图片data 上传26 //UIImage *upImage = [UIImage imageNamed:@"testImage.png"];27 //NSData *imageData = UIImagePNGRepresentation(upImage);28 29 //文件file上传,上传mp3音乐文件 30 //NSString *theUpFilePath = [NSString stringWithFormat:@"%@testMusic.mp3",NSTemporaryDirectory()];31 32 //上传个图片文件;33 NSString *theImagePath = [[NSBundle mainBundle] pathForResource:@"testImage" ofType:@"png"];34 35 self.uploadFileClient = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:kCOCOA_FileUPload]];36 NSMutableURLRequest *fileUpRequest = [_uploadFileClient multipartFormRequestWithMethod:@"POST" path:@"" parameters:nil constructingBodyWithBlock:^(id formData) {37 38 //[formData appendPartWithFileData:imageData name:@"file" fileName:@"testImage" mimeType:@"image/png"];39 40 //[formData appendPartWithFileURL:[NSURL fileURLWithPath:theUpFilePath isDirectory:NO] name:@"file" fileName:@"testMusic.mp3" mimeType:@"audio/mpeg3" error:nil];41 42 [formData appendPartWithFileURL:[NSURL fileURLWithPath:theImagePath] name:@"file" error:nil];43 44 }];45 46 self.fileUploadOp = [[AFHTTPRequestOperation alloc]initWithRequest:fileUpRequest];47 48 [_fileUploadOp setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {49 startUp.enabled = NO;50 [startUp setTitle:@"正在上传" forState:UIControlStateNormal];51 CGFloat progress = ((float)totalBytesWritten) / totalBytesExpectedToWrite;52 [uploadFileProgressView setProgress:progress animated:YES];53 54 }];55 56 [_fileUploadOp setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {57 startUp.enabled = NO;58 [startUp setTitle:@"完成" forState:UIControlStateNormal];59 NSLog(@"upload finish ---%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);60 61 } failure:^(AFHTTPRequestOperation *operation, NSError *error) {62 NSLog(@"error %@",error);63 }];64 65 66 67 68 69 70 71 }72 73 #pragma mark AFNetworking 文件上传74 75 - (void)startUploadOP76 {77 [_fileUploadOp start];78 }