php压缩解压
您好,ZIP格式的可以
<?php
//需开启配置php_zip.dll
//phpinfo();
header("Content-type:text/html;charset=gb2312");
functionget_zip_originalsize($filename,$path){
//先判断待解压的文件是否存在
if(!file_exists($filename)){
die("文件$filename不存在!");
}
$starttime=explode('',microtime());//解压开始的时间
//将文件名和路径转成windows系统默认的gb2312编码,否则将会读取不到
$filename=iconv("utf-8","gb2312",$filename);
$path=iconv("utf-8","gb2312",$path);
//打开压缩包
$resource=zip_open($filename);
$i=1;
//遍历读取压缩包里面的一个个文件
while($dir_resource=zip_read($resource)){
//如果能打开则继续
if(zip_entry_open($resource,$dir_resource)){
//获取当前项目的名称,即压缩包里面当前对应的文件名
$file_name=$path.zip_entry_name($dir_resource);
//以最后一个“/”分割,再用字符串截取出路径部分
$file_path=substr($file_name,0,strrpos($file_name,"/"));
//如果路径不存在,则创建一个目录,true表示可以创建多级目录
if(!is_dir($file_path)){
mkdir($file_path,0777,true);
}
//如果不是目录,则写入文件
if(!is_dir($file_name)){
//读取这个文件
$file_size=zip_entry_filesize($dir_resource);
//最大读取6M,如果文件过大,跳过解压,继续下一个
if($file_size<(1024*1024*6)){
$file_content=zip_entry_read($dir_resource,$file_size);
file_put_contents($file_name,$file_content);
}else{
echo"<p>".$i++."此文件已被跳过,原因:文件过大,->".iconv("gb2312","utf-8",$file_name)."</p>";
}
}
//关闭当前
zip_entry_close($dir_resource);
}
}
//关闭压缩包
zip_close($resource);
$endtime=explode('',microtime());//解压结束的时间
$thistime=$endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
$thistime=round($thistime,3);//保留3为小数
echo"<p>解压完毕!,本次解压花费:$thistime秒。</p>";
}
$size=get_zip_originalsize('temp/test.zip','temp/');
?>
② 如何通过php实现zip文件解压操作
rar文件解压php没有直接支持的,不过可以通过下载将非线程安全的dll然后扔到php的ext目录下,之后按照下面的步骤操作即可。
打开php.ini.
加一行 extension=php_rar.dll
重启web服务器 和php
复制代码
代码如下:
public function _unzip($fileName,$extractTO){
$fileName = iconv('utf-8','gb2312',"upload/zip/8月.rar");
// echo $fileName . '</br>';
$extractTo = "upload/zip/TEST/";
$rar_file = rar_open($fileName) or die('could not open rar');
$list = rar_list($rar_file) or die('could not get list');
// print_r($list);
foreach($list as $file) {
$pattern = '/\".*\"/';
preg_match($pattern, $file, $matches, PREG_OFFSET_CAPTURE);
$pathStr=$matches[0][0];
$pathStr=str_replace("\"",'',$pathStr);
// print_r($pathStr);
$entry = rar_entry_get($rar_file, $pathStr) or die('</br>entry not found');
$entry->extract($extractTo); // extract to the current dir
}
rar_close($rar_file);
}
③ php的zip解压遇到问题,文件夹解压报错!
这个解压出错的可能性有很多,最大的可能性是你下载文件时损坏了,这样损坏的文件肯定是解压不了的哦。
具体来说说吧
第一种可能:下载文件不全或下载时出错造成的,这样无法解压,可以重新再下载一次,最常见的。
第二种可能:别人上传的时候就出现了错误,你下载到本地自然会出错,这样的只能再找源文件了。
第三种可能:你的解压软件出现了问题,可以重新换一个解压软件再进行解压。
第四种可能:电脑系统出现问题了,把文件复制到其它电脑上,然后再解压。
④ 如何用PHP上传RAR压缩包同时解压到指定目录
<?php
header("content-type:text/html;charset=utf-8");
$path=getcwd();//获取当前系统目录
if($_POST['sub'])
{
$tname=$_FILES["ufile"]["tmp_name"];
$fname=$_FILES["ufile"]["name"];
move_uploaded_file($tname,$fname);
$obj=newcom("wscript.shell");//使用PHP预定义的Com组件加载Shell,加载wscript.shell用来执行dos命令的组件
$obj->run("winrarx$path\".$fname."".$path,1,true);//所要执行的命令
unlink($fname);//解压后删除已上传的压缩文件
}
?>
<formaction=""method="post"enctype="multipart/form-data">
选择要上传的文件:<inputtype="file"name="ufile">
<inputtype="submit"name="sub"value="上传压缩文件并解压">
</form>
⑤ PHP怎么解压ZIP文件
?php
$zip=zip_open("/tmp/test2.zip");
if($zip){
while($zip_entry=zip_read($zip)){
echo"Name:".zip_entry_name($zip_entry)." ";
echo"ActualFilesize:".zip_entry_filesize($zip_entry)." ";
echo"CompressedSize:".zip_entry_compressedsize($zip_entry)." ";
echo"CompressionMethod:".zip_entry_compressionmethod($zip_entry)." ";
if(zip_entry_open($zip,$zip_entry,"r")){
echo"FileContents: ";
$buf=zip_entry_read($zip_entry,zip_entry_filesize($zip_entry));
echo"$buf ";
zip_entry_close($zip_entry);
}
echo" ";
}
zip_close($zip);
}
?>
⑥ php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
本文实例讲述了php使用pclzip类实现文件压缩的方法。分享给大家供大家参考,具体如下:
使用PclZIp(zip格式)压缩,首先需要下载它的包文件(可点击此处本站下载)。PclZip功能还是蛮强大的,它可以进行压缩和解压,以及一些添加和删除的类的方法等等。当然了这些内容我们都可以在网上查找的到,没必要都得记住。我们只要在需要使用的时候自己可以很快的在网上找到使用方法就可以了。首先我们需要的就是要将下载的库文件进行引入,如
<?php
include('pclzip/pclzip.lib.php');
?>
//括号里面的地址改成自己的pclzip.lib.php
文件所在地址,
//它的所有的功能都在pclzip.lib.php里面
引入之后我们就可以进行使用了,下面是我使用时简单写的一个方法。
<?php
$zipname
=
"test.zip";
//压缩包的名称
$zipnames
=
'/zipfiles/'.$zipname;
//压缩包所在路径
$z
=
new
PclZip($zipnames);
//实例化这个PclZip类
$v_list
=
$z->create('file.txt,data/text.txt,folder');
//将文件进行压缩
if
($v_list
==
0)
{
die("Error
:
".$archive->errorInfo(true));
//如果有误,提示错误信息。
}
?>
这个一个简单的zip压缩就做好了,在这个方法中我们主要就是使用了PclZip里面的PclZip类以及它里面创建压缩包的方法create。从上面的例子我们可以看到下面这个内容
<?php
PclZip($zip_filename);
?>
//里面是该压缩包的名称以及所在路径。并不是把名称写上就可以了。
//如果路径不对是无法找到的。
<?php
PclZip::create($filelist,
[optional
arguments]);
?>
//create方法来创建压缩包。
//$filelist可以用数组包含文件的名称和文件夹名称或者是一个字符串来包含.
//如果是多个文件的话可以用逗号来隔开,如上面的例子。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
⑦ 怎样解压PHP格式的压缩文件
php格式不是压缩文件。PHP 是一种新型的 CGI 程序编写语言.应该说是个嵌入式脚本文件。和ASP、JSP有很多类似的功能。唯一不同的是,ASP要整站的解释在传递,而PHP则可以嵌入HTML代码里,和HTML一起发送。要读.PHP文件就要用PHP解释器。
⑧ php 如何解压压缩文件
解压缩文件是调用外面程序来实现的,比如下面的语句解压缩abc.tgz
system("tar xzf abc.tgz");
⑨ php实现解压缩功能
/*
由于你给我的说明不太清楚,所以可能在有些地方未能合你的本意.
*/
#include "stdafx.h"//如果发生编译错误,请删除此句再试一试
#include <iostream>
using namespace std;
//类CVehicle的申明
class CVehicle
{
public:
CVehicle();//构造函数申明
CVehicle(const CVehicle &);//拷贝构造函数申明
~CVehicle();//析构函数申明
void SetCarNo(const char *);//设置车牌号的成员函数
const char * GetCarNO(void);//获取车牌号的成员函数
void SetTotalPerson(long);//设置载客数的成员函数
void SetTotalWeight(double);//设置总的重量的成员函数
long GetTotalPerson(void);//获取载客数量
double GetTotalWeight(void);//获取总的重量
bool operator == (const CVehicle &);//重载==运算符
bool operator != (const CVehicle &);//重载!=运算符
friend char * GetVehicleID(const CVehicle &);//获取车牌号的友员函数申明
private:
char * p_id;//保存车牌号的成员变量
long total_person;//保存总的载客数的成员变量
double total_weight;//保存总的载重数量的成员变量
};
//类CCar的申明
class CCar: public CVehicle
{
public:
CCar();//构造函数
~CCar();//析构函数
void SetCarriedPerson(long);//设置准载的人数
long GetCarriedPerson(void);//获取准载人数
private:
long carried_person; //保存准载人数
};
class CTruck: public CVehicle
{
public:
CTruck();
~CTruck();
void SetCarriedWeight(double);//设置准载重量
double GetCarriedWeight(void);//获取准载重量
private:
long carried_weight;//保存准载重量的成员变量
};
//类CVehicle的构造函数
CVehicle::CVehicle()
{
p_id = new char[32];//为保存车牌号的成员变量申请32字节内存
p_id[0] = 0;//初始化车牌号为空字符串
total_person = 0;//初始化总的载客数为零个
total_weight = 0;//初始化总的载重吨数为零
};
//类CVehicle的拷贝构造函数
CVehicle::CVehicle(const CVehicle & cv)
{
p_id = new char[32];//为保存车牌号的成员变量申请32字节内存
if (p_id !=NULL )
{
strcpy(p_id,cv.p_id);
total_person = cv.total_person;
total_weight = cv.total_weight;
}
};
//类CVehicle的析构函数
CVehicle::~CVehicle()
{
if (p_id != NULL)
{
delete [] p_id;//释放之前申请的内存
}
};
//设置车牌号的成员函数
void CVehicle::SetCarNo(const char * carno)
{
strcpy(p_id,carno);
};
//获取车牌号的成员函数
const char * CVehicle::GetCarNO(void)
{
return p_id;
};
//设置总的载客数的成员函数
void CVehicle::SetTotalPerson(long tp)
{
total_person = tp;
};
//设置总的载重吨数的成员函数
void CVehicle::SetTotalWeight(double tw)
{
total_weight = tw;
};
//获取总的载客数的成员函数
long CVehicle::GetTotalPerson(void)
{
return total_person;
};
//获取总的载重吨数的成员函数
double CVehicle::GetTotalWeight(void)
{
return total_weight;
};
//重载==运算符
bool CVehicle::operator == (const CVehicle & cv)
{
return (strcmp(cv.p_id,p_id) == 0);
};
//重载!=运算符
bool CVehicle::operator != (const CVehicle & cv)
{
return (strcmp(cv.p_id,p_id) != 0);
};
//类CCar的构造函数
CCar::CCar()
:CVehicle()
{
carried_person = 0;
};
//类CCar的析构函数
CCar::~CCar()
{
//do nothing
};
//类CCar的设置准载人数的成员函数
void CCar::SetCarriedPerson(long cp)
{
carried_person = cp;
SetTotalPerson(cp);
};
//类CCar的获取准载人数的成员函数
long CCar::GetCarriedPerson(void)
{
return carried_person;
};
//类CTruck的构造函数
CTruck::CTruck()
:CVehicle()
{
carried_weight = 0;
};
//类CTruck的析构函数
CTruck::~CTruck()
{
//do nothing
};
//类CTruck的设置准载重量的成员函数
void CTruck::SetCarriedWeight(double cw)
{
carried_weight = cw;
SetTotalWeight(cw);
};
//类CTruck的获取准载重量的成员函数
double CTruck::GetCarriedWeight(void)
{
return carried_weight;
};
//获取车牌号的友员函数
char * GetVehicleID(const CVehicle & cv)
{
return cv.p_id;
};
//在下面编写测试上面定义的类的代码.
//并未写完整,你可以根据你自己的需要添加测试代码.
int main(int argc, char* argv[])
{
CVehicle cv;
cv.SetCarNo("川A5168");
cv.SetTotalPerson(5);
cv.SetTotalWeight(2);
cout<<GetVehicleID(cv)<<endl;
CVehicle cv1(cv);
cout<<(cv1 == cv)<<endl;
cout<<cv1.GetCarNO()<<endl;
return 0;
};
⑩ PHP的解压缩函数怎么用
在你的PHP安装根目录下,找到php.ini并打开,查找;extension=php_zip.dll,将这行指令前面的";"删掉,就表示开启压缩功能。。。
如果你的虚拟空间不能用压缩功能那表示空间服务商没有开启这个功能。