これが今日議論される主な問題です。ヘッダーを介して PHP がダウンロードをトリガーすることに関する PHP ヘルプ ドキュメントの指示は比較的単純ですが、インターネット上にはこの点に関する記事がほとんどなく、多くの記事では期待した効果が得られません。今日もこのテーマについてお話しますが、インターネット上のいくつかの記事と比較して改善されていると感じていただければ、私は非常に満足しています。
PDF を例として挙げると、PHP ドキュメントは、テキスト ファイルのダウンロードをトリガーするために必要な 3 つのステートメントを簡潔にリストしているため、最も正確です。
コードは次のとおりです。 // PDF を出力します
header('Content-type: application/pdf');// これは、downloaded.pdf という名前になります
header('Content-Disposition:attachment; filename="downloaded. pdf"');
// PDF ソースはoriginal.pdf にあります
readfile('original.pdf');
これら 3 つの文は正しいですが、実際の使用では非常に使いやすいです。予期せぬものもいくつかあります。あなたが非常に用心深い人であれば、この問題は簡単に回避できます。しかし、私はそうではないので、そのような問題に遭遇しました。ここで私の問題について簡単に話します。
最初の文については何も言う必要はありません。たとえば、txt ファイルをダウンロードする場合は、それを header('Content-type: application/txt) に変更するだけです。 '); 2 番目の文 この文では特に言うことはありません。ダウンロードしたドキュメントに名前を付けるだけです。txt ファイルの場合は、header('Content-Disposition:attachment; filename="downloaded)" に変更できます。 .txt"');、3 番目の文 さらに問題があります。readfile 関数は、ファイルを読み取って出力することを意味します。ここでのファイルのパスは、実際のファイル パスである必要があります。オリジナルの .txt ファイルの場合ダウンロードフォルダーの下に readfile('downloads /original.txt'); と書くと、送信したページにテキストやその他の文字が出力される場合、ダウンロードされるファイルはオリジナルファイルoriginal.txtとテキストが混在したファイルになります。送信されたページによる出力。ここで私は注意深い観察を欠いており、何かが間違っていることに気づいてすぐにコードをチェックしましたが、内容のこの部分を発見した後、すぐに解決方法を思いつくかもしれません。この問題は、送信されたページのテキストコンテンツの出力をオフにすることです。