概要:
PHP を使用してファイルをダウンロードする操作には 4 つの header() が必要です。私の他のブログ投稿「PHP によるダウンロード関数の実装方法」を参照してください。ファイルのサイズを計算するときは、次のようにします。最初にファイルを開く必要はありません。filesize($filename) で確認できます。最初にファイルを開く必要がある場合、filesize は filesize($filehandle) の形式になる可能性があります
データをクライアントに送り返すには、次のことを覚えておいてください。バッファを設定するには、「$buffer=1023」のように、毎回クライアントに出力するデータ量を指定します。指定しない場合、ファイル全体がメモリに書き込まれ、読み取られるファイルが読み込まれているかどうかを feof() 関数によって一度にクライアントに送信します。読み取られていない場合は、ファイルの読み取りを続行し ($file_data=fread())、データをクライアントに送り返します (echo $file_data)
各ダウンロードが完了すると、クライアントが更新され、実際にはデータは毎回一時ファイルに書き込まれ、すべてのダウンロードが完了したら、すべてのデータを再統合します
ここでは絶対パスを使用します。絶対パスには、相対パスよりも適応性が高く、効率的であるという利点があります (プロセスが不要になります)。
技術的なポイントの分析:,新しい ZipArchive オブジェクトを作成し、次に open メソッドを使用して zip ファイルを作成し、次に addFile メソッドを使用して、作成したばかりの zip ファイルにパッケージ化するファイルを書き込みます。忘れずにオブジェクトを閉じることをお勧めします。
b) 注: open メソッドを使用する場合、2 番目のパラメーター $flags は、開かれた zip ファイルの処理方法を指定するために使用されます。
i. ZIPARCHIVE::OVERWRITE を常に作成します。指定した zip ファイルが存在する場合は上書きされます
ii. ZIPARCHIVE::CREATE 指定された zip ファイルが存在しない場合は、新しいファイルを作成しますiii. 指定された zip ファイルが存在する場合ファイルが存在する場合、エラーが報告されます。
iv. ZIPARCHIVE::CHECKCONS
ファイルのダウンロードのプロセス:イアロイ
注: ビデオ、オーディオ、テキスト ファイルのいずれであっても、操作は最初にメモリに書き込まれる必要があります。
言い換えれば、「サーバー」上のファイルを「サーバー」のメモリに読み取る操作が不可欠です (注: ここでは、主にこのシステムを説明するために、サーバーという単語を二重引用符で囲んでいます。クラスの操作は上で完了します)サーバー)。
ファイルをメモリに書き込みたいので、最初にファイルを開く必要があります
ここでは 3 つのファイル操作関数を示します:
1 つ: fopen($filename,$mode)
2 つ: fread (int $handle, int $length)
3 つ: fclose (resource $handle)
クライアントの作業:
それでは、サーバーのメモリに既に存在するファイル情報フローをクライアントに渡すにはどうすればよいでしょうか?
答えは header() 関数を介して行われ、クライアントはファイルの処理方法、保存するか開くかなどを知っています。
最終的な効果は以下のようになります:
コードをコピーします
コードは次のとおりです: