iOS用流的形式上传文件
2014-04-03 15:41
447 查看
用流操作一个大的文件,分段传输,大致代码如下,实际应用中得加上状态机
状态机:大概就是发送20个字节之后,等待系统答复,OK就继续传送,否则重传
- (void)viewDidLoad { [super viewDidLoad]; NSString *filePath = [[NSBundle mainBundle] pathForResource:@"ble_app_ancs" ofType:@"bin"]; NSInputStream *inputStream = [[NSInputStream alloc] initWithFileAtPath: filePath]; [inputStream open]; NSInteger maxLength = 20; uint8_t readBuffer [maxLength]; //是否已经到结尾标识 BOOL endOfStreamReached = NO; // NOTE: this tight loop will block until stream ends while (! endOfStreamReached) { NSInteger bytesRead = [inputStream read: readBuffer maxLength:maxLength]; if (bytesRead == 0) { //文件读取到最后 endOfStreamReached = YES; } else if (bytesRead == -1) { //文件读取错误 endOfStreamReached = YES; } else { //将字符不断的加载到视图 NSData *data = [NSData dataWithBytesNoCopy:readBuffer length:bytesRead freeWhenDone:NO]; //这里我们可以开始上传数据,正规模式是我们上传20个字节,等待应答,服务器返回状态吗,OK,继续上传,否则重传。 NSLog(@"%@",data); } } [inputStream close]; }
返回的结果大致如下:2014-04-03 15:00:40.564 HandleFile[1541:60b] <d43f0020 69420100 7b420100 7d420100 00000000> 2014-04-03 15:00:40.566 HandleFile[1541:60b] <00000000 00000000 00000000 00000000 00000000> 2014-04-03 15:00:40.566 HandleFile[1541:60b] <00000000 7f420100 00000000 00000000 81420100> 2014-04-03 15:00:40.566 HandleFile[1541:60b] <83420100 85420100 85420100 5fcd0100 85420100> 2014-04-03 15:00:40.566 HandleFile[1541:60b] <85420100 00000000 0b800100 85420100 85420100> 2014-04-03 15:00:40.567 HandleFile[1541:60b] <85420100 85420100 85420100 85420100 85420100> 2014-04-03 15:00:40.567 HandleFile[1541:60b] <85420100 85420100 85420100 d16d0100 85420100> 2014-04-03 15:00:40.567 HandleFile[1541:60b] <85420100 ed6d0100 817f0100 99880100 85420100> 2014-04-03 15:00:40.568 HandleFile[1541:60b] <85420100 85420100 00000000 00000000 00000000> 2014-04-03 15:00:40.568 HandleFile[1541:60b] <00000000 00000000 00000000 00f002f8 00f044f8> 2014-04-03 15:00:40.568 HandleFile[1541:60b] <0ca030c8 08382418 2d18a246 671eab46 54465d46>
状态机:大概就是发送20个字节之后,等待系统答复,OK就继续传送,否则重传
相关文章推荐
- ios email 验证规则
- IOS中获取各种文件的目录路径的方法
- nagios 中安装和使用nrpe
- 6种手势交互Demo
- iOS 获取软键盘高度
- IOS开发中的CGFloat、CGPoint、CGSize和CGRect
- ios 常用字符串的操作
- ios数组操作
- ios 通知篇
- ios开发答疑录系列---xcode release 和 debug 模式造成的不同
- ios改变导航条title的字体大小和颜色
- iOS 消息提示音
- IOS TextField 用法大全
- ios7布局之navigationBar
- ios--django 图片上传
- IOS 构造和使用TableView(基于storyboard) (六)显示上下文菜单
- IOS--MKNetworkKit的使用方法
- ios Symbol(s) not found for architecture arm64
- iOS下的RSA加密方法
- IOS关于从照相机获取图片的问题,初步探究通过摄像头实现颜色与形状识别机制==