PHPでファイルをダウンロードする方法

How Download File Php



通常、拡張子が付いたファイルをダウンロードするのにPHPスクリプトは必要ありません。 EXEジップ 。このタイプのファイルのファイルの場所がで設定されている場合 href アンカー要素の属性。ユーザーがダウンロードリンクをクリックすると、ファイルが自動的にダウンロードされます。のようないくつかのファイル 画像 ファイル、 PDF ファイル、 文章 ファイル、 CSV ファイルなどは自動的にダウンロードされず、ユーザーがダウンロードリンクをクリックするとブラウザで開きます。これらのファイルは、PHPを使用して強制的にダウンロードできます。 readfile() 自動的にダウンロードされない機能。このチュートリアルでは、PHPスクリプトを使用してファイルを強制的にダウンロードする方法を示します。

ダウンロードリンクを確認する

先に述べた ジップEXE PHPスクリプトを使用せずに、ファイルが自動的にダウンロードされます。まず、次のコードでHTMLファイルを作成します。ここでは、4つのタイプのファイルをダウンロードするために4つのアンカー要素が定義されています。これらのファイルタイプには、TEXT、ZIP、PDF、およびJPGファイルが含まれます。







Download.html



< html >>
< >>
< 題名 >>ファイルのダウンロード</ 題名 >>
</ >>
< >>
< NS >>< href='abc.txt'>>TEXTファイルをダウンロードする</ >></ NS >>
< NS >>< href='horizo​​n.zip'>>ZIPファイルをダウンロードする</ >></ NS >>
< NS >>< href='lecture.pdf'>>PDFファイルをダウンロード</ >></ NS >>
< NS >>< href='rose.jpg'>>JPGファイルをダウンロードする</ >></ NS >>
</ >>
</ html >>

出力
次のダイアログボックスが表示され、zipファイルのリンクをクリックするとファイルがダウンロードされます。その後、ユーザーはファイルをダウンロードするか、アーカイブマネージャーでファイルを開くことができます。




画像ファイルをクリックすると、次の出力に示すように、画像がブラウザで自動的に開きます。ローカルドライブにイメージファイルのコピーを作成するには、ファイルを保存する必要があります。同様に、PDFおよびTEXTファイルのリンクをクリックすると、ファイルをダウンロードせずにファイルのコンテンツがブラウザで開かれます。この問題の解決策は、組み込みのPHPを使用してファイルを強制的にダウンロードすることです。 readfile() 関数。





readfile()関数を使用してファイルをダウンロードする

NS readfile() 関数はPHPスクリプトで使用され、現在の場所のファイル、またはファイルパスを持つファイルを強制的にダウンロードします。この関数の構文を以下に示します。



構文
int readfile(string $ filename [、bool $ use_include_path = false [、resource $ context]])

この関数は3つの引数を取ることができます。最初の引数は必須であり、他の2つの引数はオプションです。最初の議論、 $ filename 、ダウンロードするパスとともにファイル名またはファイル名を保存します。 2番目のパラメーターのデフォルト値 $ use_include_path 、はfalseであり、パスを含むファイル名が最初の引数で使用されている場合はtrueに設定されます。 3番目の引数、 $ context は、コンテキストストリームリソースを示すために使用されます。この関数は、最初の引数で指定されたファイルから読み取られたバイト数を返します。この関数の使用法を次の2つの例に示します。

例1:ファイル名でファイルをダウンロードする

この例では、次のコードを使用してHTMLファイルを作成します。ここで、ファイル名は、という名前のURLのパラメーターとして渡されます。 、およびこのパラメータの値は、という名前のPHPファイルに渡されます。 download.php

download2.html

< html >>
< >>
< 題名 >ファイルをダウンロード</ 題名 >>
</ >>
< >>
< NS >>< href='download.php?path = abc.txt'>ダウンロード文章ファイル</ >></ NS >>
< NS >>< href='download.php?path = horizo​​n.zip'> ZIPファイルをダウンロードする</ >></ NS >>
< NS >>< href=「download.php?path = lecture.pdf」> PDFファイルをダウンロード</ >></ NS >>
< NS >>< href='download.php?path = rose.jpg'> JPGファイルをダウンロードする</ >></ NS >>
</ >>
</ html >>

以下のコードでPHPファイルを作成し、強制的にダウンロードします。ここでは、 なくなった) 関数は、 $ _GET [‘path’] が定義されています。変数が定義されている場合、 ファイルが存在しています() 関数は、ファイルがサーバーに存在するかどうかを確認するために使用されます。次に、 ヘッダ() 関数は、使用する前に必要なヘッダー情報を設定するために使用されます readfile() 関数。 NS basename() 関数はファイル名を取得するために使用され、 ファイルサイズ() 関数は、ファイルのサイズをバイト単位で読み取るために使用されます。これは、ファイルをダウンロードするために開くダイアログボックスに表示されます。 NS 流す() 関数は、出力バッファをクリアするために使用されます。 NS readfile() ここでは、関数はファイル名でのみ使用されます。

download.php



もしも(( なくなった (($ _GET['道'])。)。
{{
//ファイル名を読み取ります
$ filename = $ _GET['道'];
//ファイルが存在するかどうかを確認します
もしも(( ファイルが存在しています (($ filename)。)。 {{

//ヘッダー情報を定義します
ヘッダ ((「コンテンツ-説明:ファイル転送」)。;
ヘッダ (('Content-Type:application / octet-stream')。;
ヘッダ (('Cache-Control:no-cache、must-revalidate')。;
ヘッダ ((「有効期限:0」)。;
ヘッダ (('Content-Disposition:添付ファイル;ファイル名= '' ベース名 (($ filename)。'' ')。;
ヘッダ (('コンテンツの長さ:' ファイルサイズ (($ filename)。)。;
ヘッダ ((「プラグマ:パブリック」)。;

//システム出力バッファをクリアします
流す (()。;

//ファイルのサイズを読み取ります
readfile (($ filename)。;

//スクリプトから終了します
NS (()。;
}
そうしないと{{
捨てた 'ファイルが存在しません。';
}
}
そうしないと
捨てた 「ファイル名が定義されていません。」
?>

出力
画像ファイルのダウンロードリンクをクリックすると、次の出力が表示されます。のファイルサイズ rose.jpg 画像は 27.2 KB 、ダイアログボックスに表示されているように。ファイルをダウンロードするには、 ファイルを保存 ラジオボタンとを押して わかった ボタン。

例2:ファイルパスを使用してファイルをダウンロードする

指定されたファイルの場所にファイルが存在する場合は、URLにファイルパスを記載する必要があります。この例では、次のコードを使用してHTMLファイルを作成します。このコードは、ファイル名とファイルパスを渡します。

download3.html

< html >>
< >>
< 題名 >>ファイルのダウンロード</ 題名 >>
</ >>
< >>
< NS >>< href=「download.php?path = downloads /lecture.pdf」>>PDFファイルをダウンロード</ >></ NS >>
< NS >>< href='download2.php?path = downloads / rose.jpg'>>JPGファイルをダウンロードする</ >></ NS >>
</ >>
</ html >>

次のコードを使用してPHPファイルを作成し、ファイルパスからファイルをダウンロードします。前の例のPHPコードは、指定されたパスからファイルをダウンロードするように少し変更されます。 NS clearstatecache() 関数は、以前に保存されたキャッシュをクリアするために使用されます。 2つの引数がで使用されています readfile() 関数。

download2.php


もしも(( なくなった (($ _GET['道'])。)。
{{
// URLを読む
$ url = $ _GET['道'];

//キャッシュをクリアします
clearstatcache (()。;

//ファイルパスが存在するかどうかを確認します
もしも(( ファイルが存在しています (($ url)。)。 {{

//ヘッダー情報を定義します
ヘッダ ((「コンテンツ-説明:ファイル転送」)。;
ヘッダ (('Content-Type:application / octet-stream')。;
ヘッダ (('Content-Disposition:添付ファイル;ファイル名= '' ベース名 (($ url)。'' ')。;
ヘッダ (('コンテンツの長さ:' ファイルサイズ (($ url)。)。;
ヘッダ ((「プラグマ:パブリック」)。;

//システム出力バッファをクリアします
流す (()。;

//ファイルのサイズを読み取ります
readfile (($ urlNS)。;

//スクリプトから終了します
NS (()。;
}
そうしないと{{
捨てた 「ファイルパスが存在しません。」;
}
}
捨てた 「ファイルパスが定義されていません。」

?>

出力
PDFファイルのダウンロードリンクをクリックすると、以下の出力が表示されます。

ビデオチュートリアル

結論

この記事では、PHPスクリプトを使用してファイルを強制的にダウンロードする簡単な方法を提供し、読者がスクリプトにダウンロード機能を追加できるようにしました。