当前位置:编程学习 > php >>

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

在我们使用zlip功能之前我们需要进行如下操作,否则就没能往下看了

首先在PHP.ini里面设置

 代码如下 复制代码

zlib.output_compression = On
zlib.output_compression_level = 6

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

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

 代码如下 复制代码

#LoadModule deflate_module modules/mod_deflate.so

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

缩。

 代码如下 复制代码

AddOutputFilterByType DEFLATE text/html text/plain  text/xml application/x-httpd-php

AddOutputFilter DEFLATE css js txt php xml html htm

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

 

 代码如下 复制代码

<?php
ini_set("zlib.output_compression", "On");
?>


<?php
ini_set("zlib.output_compression", 4096);
?>


好了现在万事具备了我们来入正文件

压缩swf文件:

 代码如下 复制代码

<?php

//文件名
$filename = "test.swf";
//打开文件
$rs = fopen($filename,"r");
//读取文件的数据
$str = fread($rs,filesize($filename));
//设置swf头文件
$head = substr($str,1,8);
$head = "C".$head;
//获取swf文件内容
$body = substr($str,8);
//压缩文件内容,使用最高压缩级别9
$body = gzcompress($body, 9);
//合并文件头和内容
$str = $head.$body;
//关闭读取的文件流
fclose($rs);
//创建一个新的文件
$ws = fopen("create.swf","w");
//写文件
fwrite($ws,$str);
//关闭文件留
fclose($ws);

?>

解压flash swf文件
 
//文件名
$filename = "test.swf";
//打开文件
$rs = fopen($filename,"r");
//读取文件的数据
$str = fread($rs,filesize($filename));
//设置swf头文件
$head = substr($str,1,8);
$head = "F".$head;
//获取swf文件内容
$body = substr($str,8);
//解压缩文件内容
$body = gzuncompress($body);
//合并文件头和内容
$str = $head.$body;
//关闭读取的文件流
fclose($rs);
//创建一个新的文件
$ws = fopen("create.swf","w");
//写文件
fwrite($ws,$str);
//关闭文件留
fclose($ws);
?>

注意:gzip数据头比zlib数据头要大,因为它保存了文件名和其他文件系统信息,事实上这是广泛使用的gzip文件的

数据头格式。注意zlib函式库本身不能创建一个gzip文件,但是它相当轻松的通过把压缩数据写入到一个有gzip文件

头的文件中。

补充:Php教程,apache
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,