php圧縮ファイルzipの例
1. 最初に用意したzip.phpツールクラスをダウンロードし、ダウンロード後解凍し、中のファイルを仮想ディレクトリ配下のincludeフォルダに置きます。真ん中。
2. 次のコードを php ファイルに追加するだけです
使用方法:
require_once "./include/zip.php";
$zip = new PHPZip();
//$zip ->ディレクトリアドレス", "圧縮ファイル名.zip"); //生成のみで自動ダウンロードはしません
$zip -> downloadZip("圧縮するフォルダディレクトリアドレス", "圧縮ファイル名.zip"); //自動ダウンロード
例: 特定の使用シナリオを確認するには、以下の疑似コードを参照できます: Code
require_once "./include/zip.php";
if (!$download) {
exit ();
}
set_time_limit( 60);
$tmpManager = new TmpManager() //次の操作を完了するクラスがあるとします
$tempfolder = array();
$tempfile = array(); // 選択したフォルダーまたはファイルをダウンロードするとします。ページ上のチェックボックスを選択して一緒にパッケージ化します
for($i = 0;$i $value = ${"select" .$i};
if ($value ! = ) {
$this_type = substr($value, 0, 1);
$this_id = substr($value, 1);
//フォルダーとファイルを変換 個別に処理
if ($this_type == d) {
$ tempfolder[] = $this_id;
}
elseif ($this_type == f) {
$tempfile[] = $this_id;
}
}
}
@mkdir($tempdir);
$curtempdir = "$tempdir /".$userid; //異なるユーザーが異なる一時フォルダーで操作します
if (file_exists($curtempdir)) {
$tmpManager->DeleteDir( $curtempdir); //古いフォルダーを削除します
}
if (sizeof( $tempfolder) > 0 || sizeof($tempfile) > 0) {
mkdir($curtempdir, 0777) // 必要に応じて、フォルダーを再作成します
}
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");//パッケージ化してダウンロード
Compression class:
- 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,名前、本当);
- }
- 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)) $ファイル名 = ベース名($dir);
- $this -> addFile($fileValue, "$filename");
- }else{
- $this->dirTree($dir,$dir);
- }
- $zipfilenametemp = time().$zipfilename;
- $out = $this -> filezip();
- $fp = fopen($zipfilenametemp, "w");
- fwrite($fp, $out 、strlen($out));
- fclose($fp);
- $filesize = filesize($zipfilenametemp);
- if ($filesize
- if($autoDownload){
- header( "Content-type: application/octet-stream");
- header("Content-disposition:attachment; filename=". $zipfilename);
- }
- echo $this -> filezip();
- } else{
- echo "zipエラーを作成!";
- }
- unlink($zipfilenametemp);
- }
- }
- //ディレクトリツリーを取得..
- function dirTree($directory,$rootDir ){
- グローバル $_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");
- // ns フォルダーに進みます
- $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->
- function unix2DosTime($unixtime = 0) {
- $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
- if ($timearray[年]
- $timearray[年] = 1980;
- $timearray[mon] = 1;
- $timearray[月曜日] = 1;
- $timearray[時間] = 0;
- $timearray[分] = 0;
- $timearray[秒] = 0;
- } // end if
- return (($時間配列[年] - 1980)
- ($timearray[hours] > 1);
- }
- function addFile($data, $name, $time = 0){
- $name = str_replace(, /, $name);
- $ dtime = dechex($this->unix2DosTime($time));
- $hexdtime = x 。 $dtime[6] 。 $dtime[7]
- 。バツ 。 $dtime[4] 。 $dtime[5]
- 。バツ 。 $dtime[2] 。 $dtime[3]
- 。バツ 。 $dtime[0] 。 $dtime[1];
- eval($hexdtime = " . $hexdtime . ";);
- $fr = "x50x4bx03x04";
- $fr .= "x14x00"; // 抽出するにはverが必要
- $fr .= "x00x00"; // 生成目的ビットフラグ
- $fr .= "x08x00"; // 圧縮方法
- $fr .= $hexdtime; // 最終更新日時
- // 「ローカル ファイル ヘッダー」セグメント
- $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)); // ファイル名の長さ
- $fr .= Pack(v, 0); // 余分なフィールド長
- $fr .= $name;
- // "ファイルデータ" セグメント
- $fr .= $zdata;
- // "データ記述子" セグメント (オプションですが、アーカイブしない場合は必須です )
- // ファイルとして機能)
- $fr .= Pack(V, $crc); // crc32
- $fr .= Pack(V, $c_len); // 圧縮ファイルサイズ
- $fr .= Pack(V, $unc_len); // 非圧縮ファイルサイズ
- // このエントリを array
- $this に追加します
- -> datasec[] = $fr;
- $new_offset = strlen(implode(, $this->datasec));
- // 中央ディレクトリにレコードを追加します
- $cdrec = "x50x4bx01x02";
- $cdrec 。 = "x00x00"; //
- $cdrec が作成したバージョン .= "x14x00"; // 抽出に必要なバージョン
- $cdrec .= "x00x00"; // 生成目的ビットフラグ
- $cdrec .= "x08x00"; // 圧縮方法
- $cdrec .= $hexdtime; // 最終更新日時
- $cdrec .= Pack(V, $crc); // crc32
- $cdrec .= Pack(V, $c_len); // 圧縮ファイルサイズ
- $cdrec .= Pack(V, $unc_len); // 非圧縮ファイルサイズ
- $cdrec .= Pack(v, strlen($name) ); // ファイル名の長さ
- $cdrec .= Pack(v, 0 ); // 追加のフィールド長
- $cdrec .= Pack(v, 0 ); // ファイルコメントの長さ
- $cdrec .= Pack(v, 0 ); // ディスク番号 start
- $cdrec .= Pack(v, 0 ); // 内部ファイル属性
- $cdrec .= Pack(V, 32 ); // 外部ファイル属性 - アーカイブ ビット set
- $cdrec .= Pack(V, $this -> old_offset ); // ローカルヘッダーの相対オフセット
- $this -> old_offset = $new_offset;
- $cdrec .= $name;
// オプションの追加フィールド、ファイルコメント
php压缩文件zipの例 1.请先下ダウンロード我標準备好的zip.php工具类、下載後解压、将里面の文件放入对应的目录中、我是放在虚拟目录下的include文件...

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版
ビジュアル Web 開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター
