上传文件至服务器
来源:互联网 发布:郑州淘宝销售团队 编辑:程序博客网 时间:2024/05/20 11:22
//上传图片-(void)showActionSheet{ //在这里呼出下方菜单按钮项 myActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles: @"打开照相机", @"从手机相册获取",nil]; [myActionSheet showInView:self.view]; [myActionSheet release]; }- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{ //呼出的菜单按钮点击后的响应 if (buttonIndex == myActionSheet.cancelButtonIndex) { NSLog(@"取消"); } switch (buttonIndex) { case 0: //打开照相机拍照 [self takePhoto]; break; case 1: //打开本地相册 [self LocalPhoto]; break; }}//开始拍照-(void)takePhoto{ UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera; if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.delegate = self; //设置拍照后的图片可被编辑 picker.allowsEditing = YES; picker.sourceType = sourceType; [picker release]; [self presentViewController:picker animated:YES completion:nil]; }else { NSLog(@"模拟其中无法打开照相机,请在真机中使用"); }}//打开本地相册-(void)LocalPhoto{ UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.delegate = self; //设置选择后的图片可被编辑 picker.allowsEditing = YES; [self presentViewController:picker animated:YES completion:nil]; [picker release];}//当选择一张图片后进入这里-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{ NSString *type = [info objectForKey:UIImagePickerControllerMediaType]; //当选择的类型是图片 if ([type isEqualToString:@"public.image"]) { NSLog(@"您选择了该图片"); //先把图片转成NSData UIImage* image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; NSData *data; if (UIImagePNGRepresentation(image) == nil) { data = UIImageJPEGRepresentation(image, 1.0); } else { data = UIImagePNGRepresentation(image); } //图片保存的路径 //这里将图片放在沙盒的documents文件夹中 NSString * DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; //文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager]; //把刚刚图片转换的data对象拷贝至沙盒中 并保存为image.png [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YES attributes:nil error:nil]; [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@"/image.png"] contents:data attributes:nil]; //得到选择后沙盒中图片的完整路径 filePath = [[NSString alloc]initWithFormat:@"%@%@",DocumentsPath, @"/image.png"]; //关闭相册界面 [picker dismissViewControllerAnimated:YES completion:nil]; [self imageUpload:image]; } }- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ NSLog(@"您取消了选择图片"); [picker dismissViewControllerAnimated:YES completion:nil];}//上传图片到服务器方法,采用了ASIFormDataRequest方法- (void) imageUpload:(UIImage *) image{ UIImage *im = [UIImage imageWithContentsOfFile:filePath];//通过path图片路径获取图片 NSData *data = UIImagePNGRepresentation(im);//获取图片数据 /* ios中获取图片的方法有两种,一种是UIImageJPEGRepresentation ,一种是UIImagePNGRepresentation 前者获取到图片的数据量要比后者的小很多。。 */ //服务器地址 NSURL *url = [NSURL URLWithString:@"这里写入你的服务器上传地址"]; aRequest = [[ASIFormDataRequest alloc] initWithURL:url]; [aRequest setDelegate:self];//代理 [aRequest setRequestMethod:@"POST"]; //这个参数还不是很清楚 [aRequest addData:data withFileName:@"test.png" andContentType:@"image/png" forKey:@"file"]; [aRequest addRequestHeader:@"Content-Type" value:@"multipart/form-data"];//这里的value值 需与服务器端 一致 [aRequest startAsynchronous];//开始。异步 [aRequest setDidFinishSelector:@selector(headPortraitSuccess)];//当成功后会自动触发 headPortraitSuccess 方法 [aRequest setDidFailSelector:@selector(headPortraitFail)];//如果失败会 自动触发 headPortraitFail 方法 }-(void)headPortraitSuccess{ NSData * myResponseData = [aRequest responseData]; //获取数据 : 调试的时候,在这里, myResponseData的值一直是nil,不知道为什么? //将接收的数据转换成NSString类型并打印出来 NSString *result = [[NSString alloc] initWithData:myResponseData encoding:NSUTF8StringEncoding]; NSLog(@"result------------>%@", result); NSDictionary *data = [result objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode]; NSArray *imgArray = [data objectForKey:@"data"]; NSString *imgpath=@"http://twww.51qed.com"; if ([imgArray count]) { NSDictionary *imgInfo = [imgArray objectAtIndex:0]; imgpath = [imgpath stringByAppendingString:[imgInfo objectForKey:@"img"]]; NSLog(@"imgpath------------>%@", imgpath); } //设置H5图片更新,ios调用JS代码 [webview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"setNewImg('%@');",imgpath]]; NSLog(@"上传成功!"); [aRequest release]; }-(void)headPortraitFail{ NSLog(@"上传失败!"); }//开始request请求- (void)requestStarted:(ASIHTTPRequest *)request{ NSLog(@"开始请求!"); }@end
需导入
<pre name="code" class="objc">#import "ASIHTTPRequest.h"#import "ASIFormDataRequest.h"#import "JSONKit.h"
这三个头文件
0 0
- 上传文件至服务器
- 上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android 文件上传至服务器
- winform上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- Android上传文件至服务器
- HTTP上传文件至服务器
- 浅谈我对协程的理解
- php操作读取数据库数据基本代码
- Linux之In命令详解
- C语言学习入门 (一) 编译、链接、关键字、数据类型、printf函数
- esayui 窗口特效详解
- 上传文件至服务器
- 【后缀数组】【spoj 694】Distinct Substrings
- 检测远程主机上的某个端口是否开启——telnet命令
- iOS 开发 - UITextFieldDelegateMethod注释记录
- 关于PHP的empty,基于PHP 5.4.30
- 避免android内存泄露
- hdu 5124
- Android的消息处理机制(图+源码分析)——Looper,Handler,Message
- PHP 上传文件大小限制