SQL Server2008的安装,SQLServer2008的安装......
2023-02-22 269 安装
php_rar是针对rar压缩文件提供的php操作扩展,该扩展主要是对rar压缩包的解压,而并没有提供压缩方式
打开压缩包函数
public static RarArchive RarArchive::open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] )
过程化风格:
RarArchive rar_open ( string $filename [, string $password = NULL [, callable $volume_callback = NULL ]] )
获取压缩包内部文件列表函数
public array RarArchive::getEntries ( void )
过程化风格:
array rar_list ( RarArchive $rarfile )
rar压缩包是否损坏和是否为空判断
public bool RarArchive::isBroken ( void )
过程化风格:
bool rar_broken_is ( RarArchive $rarfile )
通过上面的函数可以判断压缩包是否损坏,下面的函数可以判断出压缩包是否为空
public bool RarArchive::isSolid ( void )
过程化风格:
bool rar_solid_is ( RarArchive $rarfile )
如果在压缩包损坏的情况下,还要将压缩包打开那么这需要设置允许打开
public bool RarArchive::setAllowBroken ( bool $allow_broken )
过程化风格:
bool rar_allow_broken_set ( RarArchive $rarfile , bool $allow_broken )
由于我们打开的压缩包是一种资源所以在操作完成后必须将该资源关闭
public bool RarArchive::close ( void )
过程化风格:
bool rar_close ( RarArchive $rarfile )
获取文件最后操作时间
public string RarEntry::getFileTime ( void )
获取RarEntry对象中文件的名称(文件名可能是Unicode/UTF-8的需要进行特殊处理)
public string RarEntry::getName ( void )
在我们可以将获取的到字符串转换成utf-8格式的htmlenities对象,然后在通过mb_convert_encoding转换为utf-8的字符串
获取压缩包中文件的大小(bytes)
public int RarEntry::getPackedSize ( void )
public int RarEntry::getUnpackedSize ( void ) 获取条目压缩的大小
文件流内容读取,这是一个十分重要的方法,我们获取文件留后可以将文件重新写入到新的文件中
public resource RarEntry::getStream ([ string $password ] )
判断条目是否损坏或者加密
public bool RarEntry::isDirectory ( void )是否代表目录
public bool RarEntry::isEncrypted ( void )是否加密
header("content-type:text/html;charset=utf-8");
$rar = rar_open("Study.rar") or die("打开失败");
if(rar_broken_is($rar)){//如果损坏的话也允许打开
rar_allow_broken_set(true);
}
if(rar_solid_is($rar)) die("压缩包内容为空");
$entry_list = rar_list($rar) or die("获取条目失败");
if($entry_list){
echo "名称"," ","大小"," ","时间","br/>";
foreach ($entry_list as $entry) {
if(!$entry->isDirectory()){//判读是否为目录
echo entryName($entry->getName())," ",$entry->getUnpackedSize(),"& ",$entry->getFileTime(),'br/>';
}
}
}
rar_close($rar);
function entryName($name){
return mb_convert_encoding(htmlentities($name,ENT_COMPAT,"UTF-8"),"HTML-ENTITIES","UTF-8");
}
//递归创建目录
function mkdirs($path){
return is_dir($path) or mkdirs(dirname($path)) and @mkdir($path,0777);
}
function decompression($packrar){
$basePath = basename($packrar,'.rar');
$rar = rar_open($packrar) or die("获取资源失败");
if(rar_broken_is($rar)){//如果损坏的话也允许打开
rar_allow_broken_set(true);
}
if(rar_solid_is($rar)) die("压缩包内容为空");
$entry_list = rar_list($rar) or die("获取条目失败");
if($entry_list){
foreach ($entry_list as $entry) {
$name = entryName($entry->getName());
$dir = is_dir($name) ? $dir : dirname($name);//在获取的entry对象中既有文件也要文件夹
$path= "E:/".$basePath."/".$dir;
$file = "E:/".$basePath."/".$name;
mkdirs($path);
if(!$entry->isDirectory()){//判读是否为目录
$stream = $entry->getStream();
freadEntry($stream,$file);
fclose($stream);
}
}
}
rar_close($rar);
echo "ok";
}
function entryName($name){
return mb_convert_encoding(htmlentities($name,ENT_COMPAT,"UTF-8"),"HTML-ENTITIES","UTF-8");
}
/**
*解压
*/
function freadEntry($str,$path){
if($str){
$fw = fopen($path, "w ");
while (!feof($str)) {
$buffer = fread($str, 1024);
if($buffer){
fwrite($fw, $buffer);
}
}
fclose($fw);
}
}
decompression("Study.rar");
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
相关文章