使用AFNetworking图片上传post带参数
2015-03-18 11:53
501 查看
第一次做图片上传,研究了一天网上虽然有很多例子可是不是很明白。
图片上传主要就是来自照相机和相册
来自相机我们调用一下代码
到此上传1张图片就可以了
图片上传主要就是来自照相机和相册
来自相机我们调用一下代码
BOOL isCamera = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]; if (!isCamera) { NSLog(@"没有摄像头"); return ; } //从摄像头获取活动图片 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; // imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical; imagePicker.allowsEditing = NO; [self presentViewController:imagePicker animated:YES completion:^{ }];来自相册就调用
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; imagePicker.delegate = self; imagePicker.allowsEditing = NO; [self presentViewController:imagePicker animated:YES completion:^{ }];千万别忘了遵循代理
UIImagePickerControllerDelegate,UINavi<span style="font-family: Arial, Helvetica, sans-serif;">gationControllerDelegate</span>
<span style="font-family:Arial, Helvetica, sans-serif;"> </span><pre name="code" class="objc">#pragma mark 保存图片到document - (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName { NSData* imageData = UIImagePNGRepresentation(tempImage); NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString* documentsDirectory = [paths objectAtIndex:0]; // Now we get the full path to the file NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imageName]; // and then we write it out [imageData writeToFile:fullPathToFile atomically:NO]; } #pragma mark 从文档目录下获取Documents路径 - (NSString *)documentFolderPath { return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; } //上传图片执行的方法 -(void)uploadPictureWithImageData:(NSData *)imageData { AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager]; manager.responseSerializer.acceptableContentTypes=[NSSet setWithObject:@"application/json"]; NSDictionary *parameters=@{@"uid":_uid,@"wid":_wid}; [manager POST:SeverURL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 图片数据不为空才传递 if (imageData != nil) { [formData appendPartWithFileData:imageData name:@"pic" fileName:@"newimage.jpg"mimeType:@"image/jpeg"]; } } success:^(AFHTTPRequestOperation *operation, id responseObject) { } failure:^(AFHTTPRequestOperation *operation, NSError *error) { }];} // 取消相册 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [picker dismissViewControllerAnimated:YES completion:NULL]; }
选中照片执行的代理方法
<pre name="code" class="objc">- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *img=[info objectForKey:@"UIImagePickerControllerOriginalImage"]; if(picker.sourceType==UIImagePickerControllerSourceTypeCamera){ // UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil); } [self saveImage:img WithName:[NSString stringWithFormat:@"newimage%@",@".jpg"]]; NSString * path = [NSString stringWithFormat:@"%@/newimage.jpg",[self documentFolderPath]]; NSData * imageData = UIImageJPEGRepresentation([UIImage imageWithContentsOfFile:path], 1.0); [self uploadPictureWithImageData:imageData]; [self reloadWebView]; [self dismissViewControllerAnimated:YES completion:nil]; }
到此上传1张图片就可以了
下面的时上传多张图片的方法
<pre name="code" class="objc">1.图片上传 -(void)uploadPictureWithImageData:(NSData *)imageData{ NSString *url = iOS_POST_REALPICTURE_URL; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init]; [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { [formData appendPartWithFileData:imageData name:@"filedata" fileName:[NSString stringWithFormat:@"%@.jpg", uuid1] mimeType:@"image/*"]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSDictionary * dic = (NSDictionary*)responseObject; NSLog(@"Success: %@", dic); NSString * str = [dic objectForKey:@"msg"]; // NSString * str1 = [str substringWithRange:NSMakeRange(48, 36)]; NSLog(@"%@",str); NSLog(@"message: %@", [dic objectForKey:@"message"]); // NSMutableString *String1 = [[NSMutableString alloc] initWithString:str]; // [String1 insertString:@"," atIndex:0]; // NSString * string2 = [[NSString alloc]initWithString:String1]; // [myphotos appendFormat:string2]; [_imageArr addObject:str]; // [AutoDismissAlert autoDismissAlert:@"上传成功"]; [self reloadImage]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); // [self.alertView stopAnimating]; // [self.delegate ChartPictrueCellWithMessageSendStyle:MessageFaiure IndexPath:self.indexPath]; // self.exclamationView.hidden = NO; [AutoDismissAlert autoDismissAlert:@"上传失败"]; [HUD removeFromSuperview]; }]; }
相关文章推荐
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 使用HttpWebRequest POST图片等文件,带参数
- php 中使用cURL发送get/post请求,上传图片,批处理
- ios 上传多张图片总结——IOS网络访问之使用AFNetworking
- 使用最原始的http-post方式上传图片 ,上传工具类已封装 可直接使用
- 使用post方式提交表单如何获取图片数据及其他文本参数[NodeJS]
- HttpClien实现使用post方式模拟表单上传大文件和字符参数
- MVC 使用AJAX POST上传图片的方式
- 使用AFNetWorking 上传图片
- iOS开发 使用AFNetworking实现多张图片上传
- iOS使用AFNetworking上传图片或者文件
- 使用volley上传图片,一个参数多张图、多张图片多张图,亲测有效哦
- iOS多线程与网络开发之使用POST上传JSON数据 & 多值参数
- IOS 使用 HTTP POST 上传图片和文本信息
- POST请求上传多张图片并携带参数
- AFNetworking(get)请求数据,(post)上传图片
- [iOS 多线程 & 网络 - 2.6] - 使用POST上传JSON数据 & 多值参数
- AFNetworking实现POST上传文件——图片、.json、MP4,,,,,等各种类型。
- ios 上传多张图片总结——IOS网络访问之使用AFNetworking