您的位置:首页 > 移动开发 > IOS开发

iOS用流的形式上传文件

2014-04-03 15:41 447 查看
用流操作一个大的文件,分段传输,大致代码如下,实际应用中得加上状态机
- (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就继续传送,否则重传
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: