ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルでの ZipArchive 圧縮ファイルとダウンロードされたパッケージ ファイルの概要

PHP_PHP チュートリアルでの ZipArchive 圧縮ファイルとダウンロードされたパッケージ ファイルの概要

WBOY
WBOYオリジナル
2016-07-20 11:10:501680ブラウズ

この記事では、PHP での ZipArchive 圧縮ファイルとパッケージ化されたファイルのダウンロードについて簡単に紹介します。PHP でのファイルのパッケージ化について知りたい場合は、次の 5 ページを参照してください。

技術的なポイントの分析:

ファイルをzip形式にパッケージ化する
ファイルをダウンロードする機能
重要なポイントの分析:

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

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







が対象となります。

ファイルが存在する場合、エラーが報告されます。

iv. ZIPARCHIVE::CHECKCONS



---------------------------- --------------------------------------

ダウンロードの流れファイル:

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

ファイルをメモリに書き込みたいので、最初にファイルを開く必要があります

ここでは 3 つのファイル操作関数を示します: 1 つ: fopen($filename,$mode)

2 つ: fread (int $handle, int $length)🎜3: fclose (resource $handle)🎜🎜--------------------------------- -- --------🎜クライアント側の作業:🎜----------------------------- -- ---🎜では、サーバー側のメモリにすでに存在するファイル情報ストリームをクライアントに渡すにはどうすればよいでしょうか? 🎜答えは header() 関数を介して行われ、クライアントはファイルの処理方法、保存するか開くかなどがわかります。 🎜🎜🎜🎜 最終的な効果は以下のようになります: 🎜🎜🎜🎜🎜🎜コードは次のとおりですコードはコードは './ download.php'; Public function __construct () { $ this- & gt; // 現在のディレクトリに戻ります使用するusing out out through out の ' through ' s ' through through off ' s ' through ' ‐ ‐ ‐‐ ‐‐ ‐ andir($filepath); >$v){
<?php Public $ FileInfo; // すべてのファイル名、ディレクトリ名、ファイル サイズを現在のディレクトリに保存するために使用されます
echo "<script>alert('現在のディレクトリは有効なディレクトリではありません '); 4;<p> *** )){ <br> $zip->open($zipname.'.zip',ZipArchive::OVERWRITE);//空の zip ファイルを作成する{<br> $zip-> <br> $dw =new download($zipname.'.zip');$dw->getfiles(); ?><br><br> <br> <br></p> <table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE">コードは次のとおりです</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onclick="doCopy('copy4364')">コードをコピーします</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id="copy4364"> <p><?php<br /> /**<br /> * ファイルをダウンロード <br /> *<br />*/<br /> { <br /> // ファイル名を取得します<br /> function getfilename(){<br /> return $this->>_filepath;<br>ファイルサイズを取得する b public function getfilesize () {<br> Return $ this-& gt; this- & _filepath), (1024*1024); // 小数点以下 2 桁 <br>} <br> // ファイルをダウンロードする関数 <br> use using using out out out of ''s 's ‐ to ‐ - ‐ ‐ ‐ ‐ $ $ file = fopen($ this-&gt; _filepath、 "r"); this-&gt; _filename);; //毎回 1024 をクライアントに送り返す バイト数 <br> echo $file_data; se {<br> echo "<script>alert('ダウンロードは存在しません');</script> ";

ページ上の表示コードは以下の通りです


すべて選択

コードは以下の通りです コードをコピー


header("Content-type:text/html;charset= utf8");
require ('./getfile.php');
$scandir=new traverseDir();
$scandir->scandir($scandir->currentdir);
$scandir->currentdir;
if (isset($ _Post ['DOWN_LOAD'])) {
$ items = $ _ Post ['items']; // ファイルを zip 形式に圧縮します
} } Echo "現在の作業ディレクトリ :".$scandir->currentdir;
echo "
現在のディレクトリ内のすべてのファイル";
?>

&lt; table&gt;
&lt;/tr&gt; (! ($ k == '.' || $ k == '. .')) {// . と ..
?>






概要:


------------------------------------------ ---------- ------------------------------------

を使用してファイルをダウンロードする操作は、 PHP には 4 つのヘッダー () が必要です。私の他のブログ投稿を参照してください: PHP がダウンロード関数を実装する方法の詳細なプロセス分析
ファイルのサイズを計算するとき、最初にファイルを開く必要はありません。ファイルを開く場合、ファイルサイズは filesize($filehandle) の形式になることがあります
クライアントにデータを送り返すには、出力するデータ量を指定するバッファを設定することを忘れないでください。 $buffer= 1023 のように、毎回クライアントに送信します。指定しない場合、ファイル全体がメモリに書き込まれ、読み取られるファイルが読み込まれているかどうかを feof() 関数によって一度にクライアントに送信します。読み取られていない場合は、ファイルの読み取りを続行し ($file_data=fread())、データをクライアントに送り返します (echo $file_data)
各ダウンロードが完了すると、クライアントが更新され、実際にはデータは毎回一時ファイルに書き込まれ、すべてのダウンロードが完了したら、すべてのデータを再統合します
ここでは絶対パスを使用します。絶対パスには、相対パスよりも適応性が高く、効率的であるという利点があります (プロセスが不要になります)。ファイルの検索)


http://www.bkjia.com/PHPjc/444689.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/444689.html技術記事この記事では、PHP での ZipArchive 圧縮ファイルと、パッケージ化されたファイルのダウンロードについて簡単に紹介します。PHP でのファイルのパッケージ化について知りたい人は、次の 5 つを参照してください。 技術的なポイントを分析する: Will...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。