<?phpの
//ファイルのリストを取得します。
関数LIST_DIR($ DIR){
$結果=配列();
{(is_dir($ DIR))の場合
$ FILE_DIR = SCANDIR($ DIR);
foreachの($ファイルと$ FILE_DIR){
{($ファイル== '' || $ファイル== '..')であれば
持続する;
}
ELSEIF(is_dir($ DIR。$ファイル)){
$結果= array_merge($、list_dir($ DIR $ファイルを結果 '/')。。);
}
他の{
(。$結果、$ DIR $ファイル)array_push。
}
}
}
$結果を返します。
}
//リストを取得します。
$データリスト= list_dir( '../');
$ファイル名=「./bak.zip」; //最後に生成されたファイル名(パスを含みます)
もし(!のfile_exists($ファイル名)){
//再生成ファイル
$ジップ=新しいZIPARCHIVE(); //このクラスを使用し、開いたzlibにLinuxの必要性は、窓がphp_zip.dll前にコメント解除します
もし($ zip->オープン($ファイル名、ZIPARCHIVE :: CREATE)!== TRUE){
終了(「開いているファイルにできない、またはファイルの作成に失敗しました」);
}
foreachの($ valのように$データリスト){
もし(file_exists($ valの)){
$ Zip-> ADDFILE($ valを、ベース名($ valの)); // 2番目のパラメータは、ファイルが繰り返されることができるならば、あなたはノートを取る必要があり、圧縮上のパッケージのファイル名です
}
}
$ Zip->近い(); //近いです
}
もし(!のfile_exists($ファイル名)){
終了(「ファイルが見つかりませんでした」); //もまだ失敗することがあり作成します。。。。
}
ヘッダ( "のCache-Control:パブリック")。
ヘッダ(「コンテンツ記述:ファイル転送」);
ヘッダ( 'コンテンツ処分:添付ファイル;ファイル名='。ベース名($ファイル名)); //文件名
ヘッダ( "コンテンツタイプ:アプリケーション/ ZIP"); // ZIP形式
ヘッダ(「コンテンツ転送エンコード:バイナリ」); //バイナリファイルであるブラウザを、教えて
ヘッダ( 'のContent-Length:'。ファイルサイズ($ファイル名)); //は、ブラウザに指示、ファイルサイズ
@readfile($ファイル名);
?>
PHP ZIPARCHIVEを簡単に圧縮と解凍ZIPファイルは、言っているのではないすでに上、ここでは具体的な方法をオンにしているPHP ZIP拡張機能を使用する前に、最初に確認することができ、PHP拡張クラスにバンドルされている、異なるプラットフォームは、オンライン増幅方法のPHPを開きます疑問にシェアを喜ばせるならば、持っています。
ここでZIPARCHIVE PHPきちんと使用することは、圧縮と参照用の圧縮ファイルの解凍の一般的な例であること。
まず、解凍したzip ファイルを
$ジップ=新しいZIPARCHIVE; //新しいオブジェクトを作成しZIPARCHIVE
もし($ zip->オープン( 'test.zip')=== TRUE){
$ Zip-> extractTo(「画像」); //現在のフォルダパスに解凍画像に仮定
$ Zip->近い(); //近いzipファイルの扱い
}
第二に、に圧縮ファイルのzip ファイル
$ジップ=新しいZIPARCHIVE。
もし($ zip->オープン( 'test.zip'、ZIPARCHIVE :: OVERWRITE)=== TRUE){
$ Zip-> ADDFILE( 'image.txt'); //ファイル名が仮定されて追加image.txt、現在のパス
$ zip->近いです();
}
第三に、に追加したファイルの追加コンテンツのzip ファイル
$ジップ=新しいZIPARCHIVE。
$ RES = $ zip->( 'test.zip' をZIPARCHIVE :: CREATE)を開きます。
{($ RES === TRUE)の場合
$ zip-> addFromString( 'test.txtの'、 'ファイルの内容をここに');
$ zip->近いです();
エコー「OK」。
}他{
エコー「失敗しました」;
}
第四に、にパッケージ化フォルダのzip ファイル
関数addFileToZip($パス、$ ZIP){
$ハンドラ=のopendir($パス); // $パスで指定された現在のフォルダを開きます。
しばらく(($ファイル名=のreaddir($ハンドラ))!== false)の{
{//ファイルフォルダは '' という名前と(!= ".."!= "" && $ファイル名$ファイル名)であれば '..' DOはないそれらが動作
もし(is_dir($パス。 "/"。$ファイル名)){//オブジェクトが読まれる場合は、フォルダを再帰的に
addFileToZip($パス "/" $ファイル名、$ジップ。。);
オブジェクトジップ上}エルス{//ファイル
$ zip-> ADDFILE($パス "/" $ファイル名。。);
}
}
}
@closedir($パス);
}
$ジップ=新しいZIPARCHIVE();
もし($ zip->オープン( 'images.zip'、ZIPARCHIVE :: OVERWRITE)=== TRUE){
addFileToZip(「画像/」、$ジッパー); //メソッドを呼び出して、操作のためのルートディレクトリをパッケージ化、および通過のための方法にZIPARCHIVEオブジェクトべき
$ Zip->近い(); //近いzipファイルの扱い
}