国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ php教程 php手冊(cè) フォルダーを zip ファイルに圧縮するための PHP コード

フォルダーを zip ファイルに圧縮するための PHP コード

Jun 13, 2016 pm 12:20 PM
php zip ダウンロード コード 準(zhǔn)備する 戻る 意思 道具 書類 フォルダ 親切 解凍する

1. 最初に用意したzip.phpツールクラスをダウンロードし、ダウンロード後解凍し、中のファイルを仮想ディレクトリ下のincludeフォルダに置きます。
2. 次のコードを PHP ファイルに追加します

コードをコピーします コードは次のとおりです:


require_once " ./include/zip.php";
$zip = new PHPZip();
//$zip -> "圧縮対象フォルダのディレクトリアドレス", "圧縮ファイル名.zip "); //生成のみで自動(dòng)ダウンロードはしない
$zip -> downloadZip("圧縮対象フォルダのディレクトリアドレス", "圧縮ファイル名.zip"); //自動(dòng)ダウンロード


例: 次の疑似コードを參照して、特定の使用シナリオを確認(rèn)できます:
コード

コードをコピー コードは次のとおりです。


require_once "./include/zip.php";
if (!$download) {
exit();
set_time_limit(60) ;
$ tmpManager = new TmpManager() //後続の操作を完了するためのクラスがあると仮定します
$tempfile = array();ページを渡します チェックボックスを選択して、選択したフォルダーまたはファイルをダウンロードし、まとめてパッケージ化します
for($i = 0;$i < $checkboxnum;$i ) {
$value = ${"select" .$ i};
if ($value != '') {
$this_type = substr($value, 0, 1); >/ / フォルダーとファイルを別々に処理します
if ($this_type == 'd') {
$tempfolder[] = $this_id;
}
elseif ($this_type == 'f ') {
$tempfile[] = $this_id;
}
}
}
@mkdir($tempdir) = "$tempdir/".$userid ; / /異なるユーザーが異なる一時(shí)フォルダーで操作します
if (file_exists($curtempdir)) {
$tmpManager->DeleteDir($curtempdir) //古いフォルダーを削除します
}
if (sizeof( $tempfolder) > 0 || sizeof($tempfile) > 0) {
mkdir($curtempdir, 0777); // パッケージ化するファイルまたはフォルダーがある場(chǎng)合は、それらを再作成します。 >if (sizeof($tempfile) > 0) {
$tmpManager->CopyFile($tempfile,$curtempdir) //作成したフォルダーにダウンロードするファイルをコピーします
}
if (sizeof($tempfolder) > 0) {
$tmpManager->CopyFolder($tempfolder,$curtempdir); //作成したフォルダーにダウンロード先のフォルダーをコピーします
}
$zip = new PHPZip();
$zip -> downloadZip($curtempdir, "file_".date('Ymd').".zip"); //


zip をパッケージ化してダウンロードします。 .php



コードをコピー

コードは次のとおりです:


/*
ファイル名: /include/zip.php
作成者: Horace 2009/04/15
*/
class PHPZip{
var $dirInfo = array("0","0");
var $rootDir = '';
var $datasec = array();
var $ctrl_dir = array();
var $eof_ctrl_dir = "x50x4bx05x06x00x00x00x00";
var $old_offset = 0;

function downloadZip(){
createZip($dir, $zipfilename, true);
}
function createZip($dir, $zipfilename, $autoDownload = false){
if (@function_exists('gzcompress')){
@set_time_limit("0");
if (is_array($dir)){
$fd = fopen ($dir, "r");
$fileValue = fread ($fd, filesize ($filename));
fclose ($fd);
if (is_array($dir)) $filename = Basename($dir);
$this -> addFile($fileValue, "$ファイル名");
}else{
$this->dirTree($dir,$dir);
}

$zipfilenametemp = time().$zipfilename;
$out = $this ->ファイルzip();
$fp = fopen($zipfilenametemp, "w");
fwrite($fp, $out, strlen($out));
fclose($fp);
$filesize = filesize($zipfilenametemp);

if ($filesize < 104857600) {
if($autoDownload){
header("Content-type: application/octet-stream");
header("Content-disposition:attachment; filename=".$zipfilename);
}
echo $this ->ファイルzip();
}else{
echo "zip エラーが発生しました!";
}
unlink($zipfilenametemp);
}
}
//ディレクトリ ツリーを取得します。
function dirTree($directory,$rootDir){
global $_SERVER,$dirInfo,$rootDir;

$fileDir=$rootDir;
$myDir=dir($directory);
while($file=$myDir->read()){
if(is_dir("$directory/$file") and $file!="." and $file!=".." ){
$dirInfo[0] ;
$rootDir ="$fileDir$file/";

$this -> addFile('', "$rootDir");

//n のフォルダーに移動(dòng)
$this->dirTree("$directory/$file",$rootDir);
}else{
if($file!="." and $file!=".."){
$dirInfo[1] ;
//$fd = fopen ("$directory/$file", "r");
$fileValue = file_get_contents("$directory/$file");
//fclose ($fd);
$this -> addFile($fileValue, "$fileDir$file");
}
}
}
$myDir->close();
}
function unix2DosTime($unixtime = 0) {
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);

if ($timearray['year'] < 1980) {
$timearray['year'] = 1980;
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['分'] = 0;
$timearray['秒'] = 0;
} // end if

return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
($timearray['時(shí)間'] << 11) | ($timearray['分'] << 5) | ($timearray['秒'] >> 1);
}
function addFile($data, $name, $time = 0){
$name = str_replace('\', '/', $name);

$dtime = dechex($this->unix2DosTime($time));
$hexdtime = 'x' 。 $dtime[6] 。 $dtime[7]
。 'x' 。 $dtime[4] 。 $dtime[5]
。 'x' 。 $dtime[2] 。 $dtime[3]
。 'x' 。 $dtime[0] 。 $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');

$fr = "x50x4bx03x04";
$fr .= "x14x00"; //
$fr .= "x00x00"; を抽出するために必要なバージョン// 生成目的ビットフラグ
$fr .= "x08x00"; // 圧縮方式
$fr .= $hexdtime; // 最終更新日時(shí)

// 「ローカル ファイル ヘッダー」セグメント
$unc_len = strlen($data);
$crc = crc32($data);
$zdata = gzcompress($data);
$c_len = strlen($zdata);
$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // crc バグを修正
$fr .= Pack('V', $crc); // crc32
$fr .= Pack('V', $c_len); // 圧縮ファイルサイズ
$fr .= Pack('V', $unc_len); // 非圧縮ファイルサイズ
$fr .= Pack('v', strlen($name)); // ファイル名の長(zhǎng)さ
$fr .= Pack('v', 0); // 追加のフィールド長(zhǎng)
$fr .= $name;

// 「ファイルデータ」セグメント
$fr .= $zdata;

// 「データ記述子」セグメント (オプションですが、アーカイブがファイルとして提供されない場(chǎng)合は必要です
//)
$fr .= Pack('V', $crc); // crc32
$fr .= Pack('V', $c_len); // 圧縮ファイルサイズ
$fr .= Pack('V', $unc_len); // 非圧縮ファイルサイズ

// このエントリを配列
$this -> に追加します。データセック[] = $fr;
$new_offset = strlen(implode('', $this->datasec));

// 中央ディレクトリレコードに追加します
$cdrec = "x50x4bx01x02";
$cdrec .= "x00x00"; //
$cdrec によって作成されたバージョン .= "x14x00"; // 抽出に必要なバージョン
$cdrec .= "x00x00"; // 生成目的ビットフラグ
$cdrec .= "x08x00"; // 圧縮方式
$cdrec .= $hexdtime; // 最終更新日時(shí)
$cdrec .= Pack('V', $crc); // crc32
$cdrec .= Pack('V', $c_len); // 圧縮ファイルサイズ
$cdrec .= Pack('V', $unc_len); // 非圧縮ファイルサイズ
$cdrec .= Pack('v', strlen($name) ); // ファイル名の長(zhǎng)さ
$cdrec .= Pack('v', 0 ); // 余分なフィールド長(zhǎng)
$cdrec .= Pack('v', 0 ); // ファイルコメントの長(zhǎng)さ
$cdrec .= Pack('v', 0 ); // ディスク番號(hào)の開始
$cdrec .= Pack('v', 0 ); // 內(nèi)部ファイル屬性
$cdrec .= Pack('V', 32 ); // 外部ファイル屬性 - 'archive' ビットセット

$cdrec .= Pack('V', $this -> old_offset ); // ローカルヘッダーの相対オフセット
$this -> old_offset = $new_offset;

$cdrec .= $name;

// オプションの追加フィールド。ここにファイル コメントが入ります
// 中央ディレクトリに保存
$this -> ctrl_dir[] = $cdrec;
}
function filezip(){
$data = implode('', $this -> datasec);
$ctrldir = implode('', $this -> ctrl_dir);

return
$data 。
$ctrldir 。
$this -> eof_ctrl_dir 。
pack('v', sizeof($this -> ctrl_dir)) 。 // 「このディスク上」のエントリの合計(jì)數(shù)
pack('v', sizeof($this -> ctrl_dir)) 。 // 全體のエントリの合計(jì)數(shù)
pack('V', strlen($ctrldir)) 。 // 中央ディレクトリのサイズ
pack('V', strlen($data)) 。 // 中央ディレクトリの先頭へのオフセット
"x00x00"; // .zip ファイルのコメントの長(zhǎng)さ
}
}
?>


zip.php文件打包
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

USDT仮想通貨アカウントアクティベーションガイドUSDTデジタルアセット登録チュートリアル USDT仮想通貨アカウントアクティベーションガイドUSDTデジタルアセット登録チュートリアル Aug 01, 2025 pm 11:36 PM

まず、評(píng)判の良いデジタル資産プラットフォームを選択します。 1. Binance、Ouyi、Huobi、Damen Exchangeなどの主流のプラットフォームを推奨します。 2。公式Webサイトにアクセスして「登録」をクリックし、電子メールまたは攜帯電話番號(hào)を使用して、高強(qiáng)度のパスワードを設(shè)定します。 3.電子メールまたは攜帯電話検証コードの検証を完了します。 4.ログインした後、身元確認(rèn)(KYC)を?qū)g行し、身元証明文書を送信し、完全な顔認(rèn)識(shí)を提出します。 5. 2要素のID検証(2FA)を有効にし、獨(dú)立したファンドのパスワードを設(shè)定し、定期的にログインレコードを確認(rèn)してアカウントのセキュリティを確保し、最終的にUSDT仮想通貨アカウントを開いて管理します。

Binance公式アプリBinance Exchangeアプリダウンロードリンクをダウンロードする方法 Binance公式アプリBinance Exchangeアプリダウンロードリンクをダウンロードする方法 Aug 04, 2025 pm 11:21 PM

國(guó)際的にはブロックチェーンデジタルアセット取引プラットフォームとして、Binanceはユーザーに安全で便利な取引體験を提供します。その公式アプリは、市場(chǎng)視聴、資産管理、通貨取引、FIAT通貨取引など、複數(shù)のコア機(jī)能を統(tǒng)合しています。

ユーザーデータにHTML「入力」タイプを使用します ユーザーデータにHTML「入力」タイプを使用します Aug 03, 2025 am 11:07 AM

適切なHTMLinputタイプを選択すると、データの精度を向上させ、ユーザーエクスペリエンスを向上させ、使いやすさを向上させることができます。 1.テキスト、電子メール、電話、番號(hào)、日付など、データ型に従って対応する入力タイプを選択します。 2。HTML5を使用して、より直感的な相互作用方法を提供できるU(xiǎn)RL、色、範(fàn)囲、検索などの新しいタイプを追加します。 3.プレースホルダーと必要な屬性を使用して、フォームフィリングの効率と精度を改善しますが、プレースホルダーがラベルを置き換えることはできないことに注意してください。

HTTPミドルウェアロギングの例を例に進(jìn)めます HTTPミドルウェアロギングの例を例に進(jìn)めます Aug 03, 2025 am 11:35 AM

GOのHTTPログミドルウェアは、リクエストメソッド、パス、クライアントIP、および時(shí)間がかかることを記録できます。 1. http.handlerfuncを使用してプロセッサをラップします。2。next.servehttpを呼び出す前後の開始時(shí)間と終了時(shí)間を記録します。完全なサンプルコードの実行が検証されており、中小のプロジェクトの開始に適しています。拡張機(jī)能の提案には、ステータスコードのキャプチャ、JSONログのサポート、リクエストIDトラッキングが含まれます。

Binance公式アプリダウンロード最新のリンクBinance Exchangeアプリインストールポータル Binance公式アプリダウンロード最新のリンクBinance Exchangeアプリインストールポータル Aug 04, 2025 pm 11:24 PM

Binanceは世界的に有名なデジタル資産取引プラットフォームであり、ユーザーに安全で安定した豊富な暗號(hào)通貨取引サービスを提供します。そのアプリは設(shè)計(jì)が簡(jiǎn)単で強(qiáng)力で、さまざまなトランザクションタイプと資産管理ツールをサポートしています。

YII開発者:重要な技術(shù)的スキルの習(xí)得 YII開発者:重要な技術(shù)的スキルの習(xí)得 Aug 04, 2025 pm 04:54 PM

YIIのマスターになるには、次のスキルを習(xí)得する必要があります。1)YIIのMVCアーキテクチャを理解する、2)ActivereCordormの使用に習(xí)熟している、3)GIIコード生成ツールを効果的に利用する、4)マスターYIIの検証ルール、5)データベースクエリパフォーマンスを最適化する、6)これらのスキルの學(xué)習(xí)と実踐を通じて、YIIフレームワークの下での開発能力を包括的に改善することができます。

OUYI ExchangeアプリAndroidバージョンv6.132.0 OUYIアプリ公式Webサイトダウンロードおよびインストールガイド2025 OUYI ExchangeアプリAndroidバージョンv6.132.0 OUYIアプリ公式Webサイトダウンロードおよびインストールガイド2025 Aug 04, 2025 pm 11:18 PM

OKXは、世界的に有名な包括的なデジタル資産サービスプラットフォームであり、スムーズな運(yùn)用エクスペリエンスと強(qiáng)力な機(jī)能統(tǒng)合により、スポット、契約、オプションなどを含む多様な製品やサービスをユーザーに提供しています。

Binance公式アプリ最新の公式ウェブサイト入學(xué)バイナンス交換アプリのダウンロードアドレス Binance公式アプリ最新の公式ウェブサイト入學(xué)バイナンス交換アプリのダウンロードアドレス Aug 04, 2025 pm 11:27 PM

Binanceは、世界的に有名なデジタル資産取引プラットフォームの1つであり、ユーザーに安全で安定した便利な暗號(hào)通貨取引サービスを提供します。 Binanceアプリを使用して、いつでも市場(chǎng)の狀況を表示したり、購(gòu)入、販売、資産管理を行うことができます。

See all articles