iOS网路传输zip压缩
来源:互联网 发布:淘宝 之小姐 假货 豆瓣 编辑:程序博客网 时间:2024/05/08 11:27
iOS网络请求有时候需要zip压缩处理进行数据传输,代码如下
//解压缩- (NSData *)gzipInflate:(NSData*)data{ if ([data length] == 0) return data; unsigned full_length = [data length]; unsigned half_length = [data length] / 2; NSMutableData *decompressed = [NSMutableData dataWithLength: full_length + half_length]; BOOL done = NO; int status; z_stream strm; strm.next_in = (Bytef *)[data bytes]; strm.avail_in = [data length]; strm.total_out = 0; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; if (inflateInit2(&strm, (15+32)) != Z_OK) return nil; while (!done) { // Make sure we have enough room and reset the lengths. if (strm.total_out >= [decompressed length]) [decompressed increaseLengthBy: half_length]; strm.next_out = [decompressed mutableBytes] + strm.total_out; strm.avail_out = [decompressed length] - strm.total_out; // Inflate another chunk. status = inflate (&strm, Z_SYNC_FLUSH); if (status == Z_STREAM_END) done = YES; else if (status != Z_OK) break; } if (inflateEnd (&strm) != Z_OK) return nil; // Set real length. if (done) { [decompressed setLength: strm.total_out]; return [NSData dataWithData: decompressed]; } else return nil;}//压缩- (NSData *)gzipDeflate:(NSData*)data{ if ([data length] == 0) return data; z_stream strm; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; strm.total_out = 0; strm.next_in=(Bytef *)[data bytes]; strm.avail_in = [data length]; // Compresssion Levels: // Z_NO_COMPRESSION // Z_BEST_SPEED // Z_BEST_COMPRESSION // Z_DEFAULT_COMPRESSION if (deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (15+16), 8, Z_DEFAULT_STRATEGY) != Z_OK) return nil; NSMutableData *compressed = [NSMutableData dataWithLength:16384]; // 16K chunks for expansion do { if (strm.total_out >= [compressed length]) [compressed increaseLengthBy: 16384]; strm.next_out = [compressed mutableBytes] + strm.total_out; strm.avail_out = [compressed length] - strm.total_out; deflate(&strm, Z_FINISH); } while (strm.avail_out == 0); deflateEnd(&strm); [compressed setLength: strm.total_out]; return [NSData dataWithData:compressed];}
=====点击下载代码demo=====
1 0
- iOS网路传输zip压缩
- iOS zip 压缩与解压缩
- iOS类归档,zip压缩。
- ios中zip包压缩和解压缩
- IOS解压缩和压缩zip文件
- ZIP压缩
- zip 压缩
- zip压缩
- Zip压缩
- 压缩ZIP
- iOS的网路请求
- 压缩传输
- IOS开发—图片压缩/解压成Zip文件
- iOS如何处理zip文件,解压或者压缩?
- iOS Mac电脑压缩 Zip文件成cpgz
- 字符串WebService上先zip压缩再base64编码后传输
- Linux系统文件的网络传输、打包tar、压缩zip、gzip、bzip2、xz、gz、bz2
- 网路传输王 v1.2 下载
- C#6.0新特性
- 父类引用指向子类对象
- 某个客户微信上传视频各种问题
- android 底层启动流程
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
- iOS网路传输zip压缩
- live555之openRTSP----- continueAfterSETUP()视频接收并存储
- 建立数据库索引的优缺点,分析一张表上如何建立索引
- MFC学习日记-加载位图
- 论述无线AP在实现网络无死角覆盖过程中的重要作用
- 驰骋工作流引擎表单设计控件 - 关系类控件 – 审核组件及其他控件
- 1 堆、栈、常量池的区别与异同
- 网站推广五大需要注意因素
- CentOS7中添加环境变量后立即生效!