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