ホームページ >バックエンド開発 >PHPの問題 >PHPを使用してブラウザのダウンロードを閉じる方法

PHPを使用してブラウザのダウンロードを閉じる方法

PHPz
PHPzオリジナル
2023-03-29 11:33:45615ブラウズ

Web 開発では、ブラウザーにファイルをローカルにダウンロードさせるのではなく、ブラウザーにファイルを表示することが必要な場合があります。このプロセスは PHP コードを通じて実行できます。この記事では、PHP を使用してブラウザーのダウンロードをオフにする方法について詳しく説明します。

  1. HTTP ヘッダー ファイルの使用

HTTP ヘッダー ファイルは HTTP 要求と応答の一部であり、HTTP 応答に必要な情報が含まれています。 PHP の header 関数を使用して、ブラウザでファイルを開くように HTTP ヘッダー ファイルを設定できます。

次は、header 関数を使用して PDF ファイルをブラウザに表示する方法を示す簡単な例です。

<?php
$file = &#39;sample.pdf&#39;;

header(&#39;Content-type: application/pdf&#39;);
header(&#39;Content-Disposition: inline; filename="&#39; . $file . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Content-Length: &#39; . filesize($file));
header(&#39;Accept-Ranges: bytes&#39;);

@readfile($file);
?>

このコードは、最初に PDF ファイルを開き、次に header 関数を使用してHTTPヘッダードキュメントを設定します。このうち、Content-type は、応答コンテンツが PDF 形式であることをブラウザに伝えます Content-Disposition: inline は、ブラウザがページ内にファイルをインラインで表示できるようにします Content-Transfer-Encoding: binary は、ファイルがバイナリで転送されることを指定しますContent -Length は応答のデータ サイズを指定し、Accept-Ranges: bytes はサーバーがバイト範囲の要求をサポートすることを指定します。

最後に、関数 readfile を使用してファイルの内容を読み取り、ブラウザに HTML 形式で表示します。

  1. さまざまなファイル タイプの処理

PDF に加えて、ヘッダー関数を使用して、画像、オーディオ、ビデオなどの他のタイプのファイルを表示することもできます。 。 Content-type にファイルの種類を指定するだけです。

次に、いくつかの一般的なファイル タイプとその Content-type 値を示します。

##テキスト ファイルtext/plainAudio オーディオ/mpeg、audio/ogg、audio/wavvideovideo/mp4、video/ogg、video/webm
ファイル タイプ Content-type
画像 image/jpeg、image/png、image/gif、image/bmp
PDF application/pdf
ブラウザに画像を表示する方法を示す例は次のとおりです:

<?php
$file = &#39;sample.jpg&#39;;

header(&#39;Content-type: image/jpeg&#39;);
header(&#39;Content-Disposition: inline; filename="&#39; . $file . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Content-Length: &#39; . filesize($file));
header(&#39;Accept-Ranges: bytes&#39;);

@readfile($file);
?>
#Download file
  1. Displayed の代わりにファイルをダウンロードする必要がある場合ブラウザでは、Content-Disposition ヘッダーを使用して、ブラウザにファイルをダウンロードするように指示できます。

次は、ブラウザでファイルをダウンロードする方法を示す例です:

<?php
$file = &#39;sample.zip&#39;;
$filename = &#39;download.zip&#39;;

header(&#39;Content-type: application/zip&#39;);
header(&#39;Content-Disposition: attachment; filename="&#39; . $filename . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Content-Length: &#39; . filesize($file));
header(&#39;Accept-Ranges: bytes&#39;);

@readfile($file);
?>

この例では、Content-Disposition ヘッダーを設定して、ブラウザにファイルをダウンロードするように指示します。 filename パラメーターは、ダウンロードされるファイルのファイル名を指定するために使用されます。

大きなファイルの処理
  1. 大きなファイルの場合は、パフォーマンスの問題を考慮する必要があり、ファイル全体を一度にメモリに読み込むことができません。この問題は、PHP の出力バッファ (ob_*) およびフラッシュ関数によって解決できます。具体的な方法は、最初に HTTP ヘッダー ファイルを出力し、次にファイルのコンテンツをブロックごとに出力し、フラッシュ関数を使用して出力の各部分のコンテンツをブラウザーにプッシュすることです。

次は、大きなファイルを処理する方法を示す例です:

<?php
$file = &#39;bigfile.zip&#39;;
$filename = &#39;download.zip&#39;;
$chunksize = 4096;

header(&#39;Content-type: application/zip&#39;);
header(&#39;Content-Disposition: attachment; filename="&#39; . $filename . &#39;"&#39;);
header(&#39;Content-Transfer-Encoding: binary&#39;);
header(&#39;Accept-Ranges: bytes&#39;);
header(&#39;Content-Length: &#39; . filesize($file));

$handle = fopen($file, &#39;rb&#39;);

while (!feof($handle)) {
    $buffer = fread($handle, $chunksize);
    echo $buffer;
    ob_flush();
    flush();
}

fclose($handle);
?>

この例では、毎回 4096 バイトのファイルの内容を読み取り、ブロックごとに出力します。ループ内で、ob_flush 関数と flash 関数を使用してバッファーの内容をブラウザーにプッシュしていることに注意してください。

概要: PHP を使用してブラウザのダウンロードをオフにする

この記事では、PHP を使用してブラウザのダウンロードをオフにする方法 (ファイルの表示、さまざまなファイル タイプの処理、ファイルのダウンロード、および大きなファイルやドキュメントの処理。この知識は Web 開発者にとって非常に重要ですので、この記事がお役に立てば幸いです。

以上がPHPを使用してブラウザのダウンロードを閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。