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

ホームページ php教程 php手冊(cè) PHP ファイルのパッケージ化。PHP 獨(dú)自の ZipArchive をダウンロードして使用して、ファイルを圧縮し、パッケージ化されたファイルをダウンロードします。

PHP ファイルのパッケージ化。PHP 獨(dú)自の ZipArchive をダウンロードして使用して、ファイルを圧縮し、パッケージ化されたファイルをダウンロードします。

Jun 13, 2016 am 11:59 AM
php ziparchive ダウンロード 使用 圧縮 要約する パック 蕓術(shù) 書類 自分のものを持參してください

概要:

PHP を使用してファイルをダウンロードする操作には 4 つの header() が必要です。私の他のブログ投稿「PHP によるダウンロード関數(shù)の超詳細(xì)なプロセス分析の方法」を參照してください。
サイズを計(jì)算するとき。 filesize($filename) から、最初にファイルを開く必要がある場合、filesize は filesize($filehandle)
データの送信元の形式になることがわかります。クライアントに戻す場合は、$buffer=1023 のように、毎回クライアントに出力するデータ量を指定するバッファを設(shè)定することを忘れないでください。指定しない場合は、ファイル全體をメモリに書き込み、クライアントにデータを一括送信します。
feof()関數(shù)により、読み込むファイルが読み込まれているかどうかを判定できます。まだ読み込まれていません。終了後、ファイルの読み取りを続行し ($file_data=fread())、データをクライアントに送り返します (echo $file_data)
各ダウンロードが完了すると、クライアントは更新されますこれは、実際には、毎回データを一時(shí)ファイルに書き込み、すべてのダウンロードが完了した後にすべてのデータを再統(tǒng)合することを示しています
ここでは絶対パスを使用します。絶対パスの利點(diǎn)は、より適応性が高いことです。相対パスに比べて効率的です(ファイルを見つけるプロセスが不要になります)
技術(shù)的なポイントを分析します:

ファイルを zip 形式にパッケージ化します

ダウンロード機(jī)能ファイル

キーポイント分析:

ここでは、PHP に付屬の ZipArchive クラスを使用します
a) 新しい ZipArchive オブジェクトを作成し、open次に、addFile メソッドを使用して、作成した zip ファイルにパッケージ化するファイルを書き込みます。忘れずにオブジェクトを閉じてください。

b) 注: open メソッドを使用する場合、2 番目のパラメーター $flags は、開かれた zip ファイルの処理方法を指定するために使用されます。

i . ZIPARCHIVE::OVERWRITE は常に新しいファイルを作成します。指定された zip ファイルが存在する場合は上書きされます。

ii. ZIPARCHIVE::CREATE 指定された zip ファイルが存在しない場合は、新しいファイルが作成されます。

iii. ZIPARCHIVE::EXCL 指定された zip ファイルが存在する場合、エラーが報(bào)告されます

iv. ZIPARCHIVE::CHECKCONS

ファイルのダウンロード処理:

サーバー側(cè)の作業(yè):

クライアントのブラウザは、ダウンロードされた PHP ファイルを処理するリクエストを送信します。
注: ビデオ、オーディオ、テキスト ファイルのいずれであっても、最初に操作をメモリに書き込む必要があります。
言い換えると、「サーバー」上のファイルを「サーバー」のメモリに読み取る操作が不可欠です (注: ここでは主にこれを説明するために、サーバーという単語を二重引用符で囲んでいます) 一連の操作は次のとおりです。サーバー上で完了します)。

ファイルをメモリに書き込む必要があるため、最初にファイルを開く必要があります
ここでは 3 つのファイル操作関數(shù)を示します:
1 つ: fopen($filename,$ mode)
2: fread ( int $handle , int $length )
3: fclose ( resource $handle )

クライアント側(cè)の作業(yè):

それでは、次のようにします。サーバー側(cè)メモリにすでに存在するファイル情報(bào)フローをクライアントに渡しますか?
答えは header() 関數(shù)を通じてであり、クライアントはファイルの処理方法、保存するか開くかなどを知っています。

最終的な効果は以下のようになります:


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


require'./download.php';
/**
* ディレクトリを走査し、zip 形式にパッケージ化します
*/
class traverseDir{
public $currentdir;// 現(xiàn)在のディレクトリ
public $filename;//ファイル名
public $fileinfo;//現(xiàn)在のディレクトリ內(nèi)のすべてのファイル名、ディレクトリ名、およびファイル サイズを保存するために使用されます
public function __construct(){
$this - >currentdir=getcwd();//現(xiàn)在のディレクトリに戻ります
}
//ディレクトリを移動(dòng)します
public function scandir($filepath){
if (is_dir($filepath)) {
$arr=scandir($filepath);
foreach ($arr as $k=>$v){
$this->fileinfo[$v][]=$this-> ;getfilesize($ v);
}
}else {
echo "<script>alert('現(xiàn)在のディレクトリは有効なディレクトリではありません');</script>"; }
}
/**
* ファイル サイズを返します
*
* @param string $filename ファイル名
* @return ファイル サイズ (KB)
*/
public function getfilesize($fname){
return filesize($fname)/1024;
}
/**
* 圧縮ファイル(zip形式)
*/
public function tozip($items){
$zip=new ZipArchive();
$zipname=date('YmdHis',time()); ($zipname)){
$zip->open($zipname.'.zip',ZipArchive::OVERWRITE);// ($i=0;$i< 用の空の zip ファイル
を作成します) count($items); $i ){
$zip->addFile($this->currentdir.'/'.$items[$i],$items[$i]);
$zip- >close();
$dw=new download($zipname.'.zip'); //ファイルをダウンロードします
$dw->getfiles(); ($zipname.'.zip') //ダウンロード後に削除します。
}
}
?> >コードをコピー

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


/**

* ファイルをダウンロード
*

*/ class download{ protected $ _filename; protected $_filepath; protected $_filesize;// ファイル サイズ

public function __construct($filename){

$this->_filename=$filename; >_filepath=dirname( __FILE__).'/'.$filename;
}
//ファイル名を取得します
public function getfilename(){
return $this->_filename; ??>}

//ファイルパスを取得します (ファイル名を含む)
public function getfilepath(){
return $this->
}

//ファイル サイズを取得します
public function getfilesize(){
return $this->_filesize=number_format(filesize($this->_filepath)/(1024*1024),2);//削除小數(shù)點(diǎn)第 2 位まで
}
//ファイルをダウンロードする関數(shù)
public function getfiles(){
//ファイルが存在するかどうかを確認(rèn)します
if (file_exists($this->_filepath) ){
//ファイルを開きます
$file = fopen($this->_filepath,"r");
//返されたファイルの種類
Header("Content-type: application/ octet-stream");
/ /バイトサイズに応じて返す
Header("Accept-Ranges: bytes");
//ファイルのサイズを返す
Header("Accept -Length: ".filesize($this->_filepath) );
//これはクライアント用のポップアップ ダイアログ ボックスで、対応するファイル名です
Header("Content-Disposition:attachment; filename =".$this->_filename);
//変更前は一度にクライアントにデータを送信する
echo fread($file, filesize($this->_filepath));
//変更後は、一度に 1024 バイトのデータのみがクライアントに送信されます
//データをクライアントに送り返します
$buffer=1024;//
//ファイルがbe read
while (!feof($file)) {
//ファイルをメモリに読み取ります
$file_data=fread($file,$buffer);
//1024 バイトのデータを送信します毎回クライアントに戻ります
echo $file_data;
}

fclose($file)
}else {
echo "<script>alert('ダウンロードしたいファイルが存在しません');</script>";
}
}
}
?>


ページに表示されたコード:



コードをコピー

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




header("Content-type:text/html;charset=utf8");
require('./getfile.php' );
$scandir=new traverseDir();
$scandir->scandir($scandir->currentdir);

if (isset ($_POST['down_load'])){
$items=$_POST['items'];
$scandir->tozip($items);// ファイルを zip 形式に圧縮します

echo "現(xiàn)在の作業(yè)ディレクトリ:".$scandir->currentdir;
echo "
現(xiàn)在のディレクトリ內(nèi)のすべてのファイル"

<フォームアクション="list.php"メソッド="POST">



$res=$scandir-> >foreach ($res as $k=>$v){
if (!($k=='.' || $k=='..')) {// と を除外します。
?>




}
}
?> tr>




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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

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

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? 最新のPHP開発とベストプラクティスを最新の狀態(tài)に保つにはどうすればよいですか? Jun 23, 2025 am 12:56 AM

postaycurrentwithpdevellyments andbest practices、follow keynewsourceslikephp.netandphpweekly、egagewithcommunitiessonforums andconferences、keeptooling and gradivallyadoptnewfeatures、andreadorcontributeTopensourceprijeprijeprijeptrijeprijeprests.

PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? PHPとは何ですか、そしてなぜそれがWeb開発に使用されるのですか? Jun 23, 2025 am 12:55 AM

PhpBecamepopularforwebdevelopmentduetoitseaseaseaseaseasease、SeamlessintegrationWithhtml、widespreadhostingsupport、andalargeecosystemincludingframeworkelavelandcmsplatformslikewordspresspressinsinsionsisionsisionsisionsisionsionsionsisionsionsionsisionsisions

PHPタイムゾーンを設(shè)定する方法は? PHPタイムゾーンを設(shè)定する方法は? Jun 25, 2025 am 01:00 AM

tosettherighttimezoneInphp、usedate_default_timezone_set()functionthestthestofyourscriptwithavalididentifiersiersuchas'america/new_york'.1.usedate_default_timezone_set()beforeanydate/timefunctions.2.2.Altertentally、confuturethephp.inifilebyset.

PHPでのユーザー入力を検証して、特定の基準(zhǔn)を満たすことを確認(rèn)するにはどうすればよいですか? PHPでのユーザー入力を検証して、特定の基準(zhǔn)を満たすことを確認(rèn)するにはどうすればよいですか? Jun 22, 2025 am 01:00 AM

tovalidateuserinputinphp、usebuilt-validationfunctionslikefilter_var()andfilter_input()、applyRegularexpressionsforcustomformatsusususussusorphoneNumbers、checkdatatypesfornumerueSlikeageorpricepriceprice

PHP(serialize()、unserialize())のデータシリアル化とは何ですか? PHP(serialize()、unserialize())のデータシリアル化とは何ですか? Jun 22, 2025 am 01:03 AM

thephpfunctionSerialize()andunserialize()areusedtoconvertcomplexdatastructostorestorestorustorasandabackagain.1.serialize()c onvertsdatalikecarraysorobjectsraystringcontainingtainingtainingepeandStructureinformation.2。

HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? HTMLファイルにPHPコードを埋め込むにはどうすればよいですか? Jun 22, 2025 am 01:00 AM

PHPコードをHTMLファイルに埋め込むことができますが、ファイルに.phpの拡張機(jī)能があることを確認(rèn)して、サーバーが正しく解析できるようにします。標(biāo)準(zhǔn)タグを使用してPHPコードをラップし、HTMLのどこにでも動(dòng)的コンテンツを挿入します。さらに、同じファイルでPHPとHTMLを複數(shù)回切り替えて、條件付きレンダリングなどの動(dòng)的関數(shù)を?qū)g現(xiàn)できます。短いラベル、引用マークエラー、または省略されたエンドラベルによって引き起こされる問題を回避するために、サーバーの構(gòu)成と構(gòu)文の正確性に注意してください。

クリーンで保守可能なPHPコードを書くためのベストプラクティスは何ですか? クリーンで保守可能なPHPコードを書くためのベストプラクティスは何ですか? Jun 24, 2025 am 12:53 AM

清潔で維持しやすいPHPコードを書くための鍵は、標(biāo)準(zhǔn)、合理的な構(gòu)造に従って、コメント、テスト能力を適切に利用する明確な命名にあります。 1。$ userDataやcalculatetotalprice()などの明確な変數(shù)、関數(shù)、クラス名を使用します。 2。PSR-12標(biāo)準(zhǔn)統(tǒng)一コードスタイルに従ってください。 3.責(zé)任に従ってコード構(gòu)造を分割し、MVCまたはLaravelスタイルのカタログを使用して整理します。 4.麺スタイルのコードを避け、単一の責(zé)任でロジックを小さな関數(shù)に分割します。 5.キーポイントにコメントを追加し、インターフェイスドキュメントを書き込み、パラメーター、返品値、例外を明確にします。 6.テスト可能性を改善し、依存関係を採用し、グローバルな狀態(tài)と靜的な方法を減らします。これらのプラクティスは、コードの品質(zhì)、コラボレーション効率、メンテナンス後の容易さを改善します。

See all articles
;/td>
サイズ (KB)