ヘッダーを介して PHP がダウンロードをトリガーすることに関する PHP ヘルプ ドキュメントの指示は比較的単純ですが、インターネット上にはこの点に関する記事がほとんどなく、多くの記事では期待した効果が得られません。今日もこのテーマについてお話しますが、インターネット上のいくつかの記事と比較して改善されていると感じていただければ、私は非常に満足しています。
正確な観点から見ると、PHP ドキュメントはテキスト ファイルのダウンロードをトリガーするために必要な 3 つのステートメントを簡潔にリストしているため、最も正確です。
以下は引用された内容です。
header('Content-type: application/pdf')
を出力します
。 // これは、downloaded.pdfheader('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 関数は、ファイルを読み取って出力することを意味します。ダウンロード フォルダー内のファイルのパスは、実際のファイル パスである必要があります。 readfile('downloads/original.txt'); と書くことができ、送信されたページがテキストやその他の文字を出力する場合、ダウンロードされるファイルは元のファイルoriginal.txtと送信されたページが出力したテキストの混合ファイルになります。ここで私は注意深い観察を欠いており、何かが間違っていることに気づいてすぐにコードをチェックしましたが、内容のこの部分を発見した後、すぐに解決方法を思いつくかもしれません。この問題は、送信されたページのテキストコンテンツの出力をオフにすることです。 この時点で問題は解決し、テキスト ファイルのリンクをクリックするとダウンロード ダイアログ ボックスが表示されます。