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,將這行指令前面的";"刪掉,就表示開啟壓縮功能。。。
如果你的虛擬空間不能用壓縮功能那表示空間服務商沒有開啟這個功能。