使用原生态的api上传文件的实现:
来源:互联网 发布:android 5高级编程 编辑:程序博客网 时间:2024/06/06 01:34
- 使用原生态的api上传文件的实现:
- #import "MainViewController.h"
- @interface MainViewController ()
- @property (weak, nonatomic) UIImageView *imageView;
- @end
- @implementation MainViewController
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- //定义Imageview并设置图像
- UIImage *image = [UIImage imageNamed:@"头像1.png"];
- UIImageView *imageView = [[UIImageView alloc]initWithImage:image];
- [imageView setFrame:CGRectMake(60, 20, 200, 200)];
- [self.view addSubview:imageView];
- self.imageView = imageView;
- UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
- [button setFrame:CGRectMake(60, 240, 200, 40)];
- [button setTitle:@"upload" forState:UIControlStateNormal];
- [self.view addSubview:button];
- [button addTarget:self action:@selector(uploadImage) forControlEvents:UIControlEventTouchUpInside];
- [self.view addSubview:button];
- }
- #pragma mark 上传文件(图像)
- - (void)uploadImage
- {
- NSLog(@"upload");
- //思路: 需要使用http的post方法上传文件
- //调用的url是http://localhost/~apple/itcast/upload.php
- //数据体的参数名:file
- //1建立URL
- NSURL *url = [NSURL URLWithString:@"http://localhost/~apple/itcast/upload.php"];
- //2建立NSMutableRequest
- NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
- //1)设置request的属性,设置方法
- [request setHTTPMethod:@"POST"];
- //2)设置数据体
- //1> 设置boundary的字符串,可以复用
- NSString *boundary = @"uploadBoundary";
- //2>头部字符串
- NSMutableString *startStr = [NSMutableString string];
- [startStr appendFormat:@"--%@\n", boundary];
- [startStr appendString:@"Content-Disposition: form-data; name=\"file\"; filename=\"upload.png\"\n"];
- [startStr appendString:@"Content-Type: image/png\n\n"];
- //3>尾部字符串
- NSMutableString *endStr = [NSMutableString string];
- [endStr appendFormat:@"--%@\n", boundary];
- [endStr appendString:@"Content-Disposition: form-data: name=\"submit\"\n\n"];
- [endStr appendString:@"Submit\n"];
- [endStr appendFormat:@"--%@--", boundary];
- //4>拼接数据体
- NSMutableData *bodyData = [NSMutableData data];
- [bodyData appendData:[startStr dataUsingEncoding:NSUTF8StringEncoding]];
- NSData *imageData = UIImagePNGRepresentation(self.imageView.image);
- [bodyData appendData:imageData];
- [bodyData appendData:[endStr dataUsingEncoding:NSUTF8StringEncoding]];
- [request setHTTPBody:bodyData];
- //5>指定Content-Type,在上传文件时,需要指定content-type和content-length
- NSString *contentStr = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
- [request setValue:contentStr forKey:@"Content-Type"];
- //6>指定Content-Length
- NSInteger length = [bodyData length];
- [request setValue:[NSString stringWithFormat:@"%d", length] forKey:@"Content-Length"];
- //3使用NSURLConnection的同步方法上传文件,因为需要用户确认文件是否上传成功。
- //在使用http上传文件时,通常是有大小限制的。一般不会超过2M.
- NSURLResponse *response = nil;
- NSError *error = nil;
- NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
- NSString *resultStr = [[NSString alloc]initWithData:resultData encoding:NSUTF8StringEncoding];
- NSLog(@"%@", resultStr);
- }
- @end
0 0
- 使用原生态的api上传文件的实现:
- 原生态文件上传
- Yii2使用原生态input上传文件
- iOS 原生态API实现二维码的扫描功能
- 苹果原生态的图片上传实例
- javascript新的原生态API
- js脚本实现文件上传 【原生态ajax实现】
- iOS 原生态分享功能的实现
- js原生态的Ajax实现+Struts2
- js原生态的Ajax实现+SpringMVC
- XMLHttpRequest 使用 原生态的AJAX
- Cocos2d怎样使用原生态的控件
- 使用JavaScript编写原生态的Ajax
- 【JavaScript】利用sort()函数与文件碎片实现表格的前端排序,兼容IE6原生态
- 使用Servlet3.0提供的API实现文件上传
- 使用python原生态的min和max函数实现升序排序和降序排序
- AJAX的原生态写法
- android的原生态线程
- Linux进程间通信-信号量
- git log 常用命令及技巧
- 个人收藏的linux服务器所有命令
- 微信自定义菜单流程
- 脚本注释 CNHK
- 使用原生态的api上传文件的实现:
- ceph存储 ceph中PG的意义
- oracle set指令
- 数据库创建以及读写
- LeetCode 解题报告 Single NumberII
- IE8下使用jquery中的ajax不走回调函数success
- rabbitmq——用户管理
- Cisco交换机端口假死(err-disable)解决方法
- Android开发之VersionCode和VersionName知识