ホームページ  >  記事  >  バックエンド開発  >  ヘッダーを使用してさまざまな種類のファイルをダウンロード用に送信する php の例

ヘッダーを使用してさまざまな種類のファイルをダウンロード用に送信する php の例

WBOY
WBOYオリジナル
2016-07-25 09:04:38720ブラウズ
  1. header('Content-type: application/image/pjpeg');//出力タイプ
  2. header('Content-Disposition:attachment; filename="downloaded.jpg"') / /表示された名前をダウンロードし、形式に注意してください
  3. readfile('my.jpg');
  4. // そして、情報を送信する前のヘッダーで設定されたタイプでこのファイルを出力すると、ダウンロード ボックスがポップアップします
  5. //は、サーバーに置きます My.jpg がダウンロードされ、ダウンロード表示と保存名がデフォルトで download.jpg
  6. ?>
コードをコピー

いわゆるテキストファイルのダウンロードとは、テキスト ファイルへのリンクをクリックしてもファイルは開きません。このファイルの代わりにダウンロード ダイアログ ボックスが表示され、これが今日議論される主な問題です。ヘッダーを介して PHP がダウンロードをトリガーすることに関する PHP ヘルプ ドキュメントの指示は比較的単純ですが、インターネット上にはこの点に関する記事がほとんどなく、多くの記事では期待した効果が得られません。 正確な観点から見ると、PHP ドキュメントはテキスト ファイルのダウンロードをトリガーするために必要な 3 つのステートメントを簡潔にリストしているため、最も正確です。

  1. // PDF を出力します
  2. header('Content-type: application/pdf');
  3. // これは、downloaded.pdf という名前になります
  4. header('Content-処理: filename="downloaded.pdf"');
  5. // PDF ソースは、original.pdf にあります
  6. ?>
これら 3 つ文は正しいですが、非常に注意深い人であれば、実際の使用中に予期せぬ問題が簡単に発生する可能性があります。しかし、私はそうではないので、そのような問題に遭遇しました。ここで私の問題について簡単に話します。 最初の文については何も言う必要はありません。必要なのは、ドキュメントのタイプを変更することだけです。たとえば、txt ファイルをダウンロードする場合は、それを header('Content-type: application/txt) に変更します。 '); 2 番目の文はあまり意味がありません。ダウンロードしたドキュメントに名前を付けるだけです。それが txt ファイルの場合は、header('Content-Disposition:attachment; filename="downloaded.txt"''); に変更できます。 3 番目の文にはさらに問題があります。readfile 関数は、ファイルを読み取って出力することを意味します。ダウンロード フォルダー内のファイルのパスは、実際のファイル パスである必要があります。 readfile('downloads/original.txt'); のように記述し、送信されたページがテキストやその他の文字を出力する場合、ダウンロードされるファイルは、元のファイルoriginal.txtと送信されたページが出力したテキストの混合ファイルになります。ページ。

ここで私は注意深い観察を欠いており、何かが間違っていることに気づいてすぐにコードをチェックしましたが、上記のテキストが必要なものであることがわかりませんでした。コンテンツのこの部分を発見した後、あなたはすぐに思いつくかもしれません。この問題を解決する方法は、送信されたページのテキスト コンテンツの出力をオフにすることです。

問題は解決され、テキスト ファイルのリンクをクリックするとダウンロード ダイアログ ボックスがトリガーされます。

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