首页 > 网站 > Apache > 正文

php使用zlib压缩和解压缩文件(swf)

2024-08-27 18:22:12
字体:
来源:转载
供稿:网友

本文章利用一个实例来介绍php中的zlib进行文件的压缩和解压缩,在我们使用zlip功能之前我们需要进行如下操作,否则就没能往下看了,首先在PHP.ini里面设置:

  1. zlib.output_compression = On 
  2. zlib.output_compression_level = 6 

第一项是开启压缩,第二项是压缩率,可选范围为1-9;

然后是apach里面开启deflate压缩,去掉井号。

  1. #LoadModule deflate_module modules/mod_deflate.so 

到此为止这样还是不行的,还需要在http.conf选个一空白处加上对文件类型的输出过滤,对哪些后缀的进行选择性压缩。

  1. AddOutputFilterByType DEFLATE text/html text/plain  text/xml application/x-httpd-php 
  2. AddOutputFilter DEFLATE css js txt php xml html htm 

如果没有权限修改php.ini文件我们可以常用使用phpr ini_set函数来操作,如:

  1. <?php 
  2. ini_set("zlib.output_compression""On"); 
  3. ?> 
  4. <?php 
  5. ini_set("zlib.output_compression", 4096); 
  6. ?> 

好了现在万事具备了我们来入正文件,压缩swf文件:

  1. <?php 
  2. //文件名  
  3. $filename = "test.swf";  
  4. //打开文件  
  5. $rs = fopen($filename,"r");  
  6. //读取文件的数据  
  7. $str = fread($rs,filesize($filename));  
  8. //设置swf头文件  
  9. $head = substr($str,1,8);  
  10. $head = "C".$head;  
  11. //获取swf文件内容  
  12. $body = substr($str,8);  
  13. //压缩文件内容,使用最高压缩级别9  
  14. $body = gzcompress($body, 9);  
  15. //合并文件头和内容  
  16. $str = $head.$body;  
  17. //关闭读取的文件流  
  18. fclose($rs);  
  19. //创建一个新的文件  
  20. $ws = fopen("create.swf","w");  
  21. //写文件  
  22. fwrite($ws,$str);  
  23. //关闭文件留  
  24. fclose($ws); 
  25. ?> 

解压flash swf文件

  1. <?php 
  2. //文件名  
  3. $filename = "test.swf";  
  4. //打开文件  
  5. $rs = fopen($filename,"r");  
  6. //读取文件的数据  
  7. $str = fread($rs,filesize($filename));  
  8. //设置swf头文件  
  9. $head = substr($str,1,8);  
  10. $head = "F".$head;  
  11. //获取swf文件内容  
  12. $body = substr($str,8);  
  13. //解压缩文件内容  
  14. $body = gzuncompress($body);  
  15. //合并文件头和内容  
  16. $str = $head.$body;  
  17. //关闭读取的文件流  
  18. fclose($rs);  
  19. //创建一个新的文件  
  20. $ws = fopen("create.swf","w");  
  21. //写文件  
  22. fwrite($ws,$str);  
  23. //关闭文件留  
  24. fclose($ws);  
  25. ?> 

注意:gzip数据头比zlib数据头要大,因为它保存了文件名和其他文件系统信息,事实上这是广泛使用的gzip文件的数据头格式。注意zlib函式库本身不能创建一个gzip文件,但是它相当轻松的通过把压缩数据写入到一个有gzip文件头的文件中。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表