-
- header('Content-type: application/image/pjpeg');//出力タイプ
- header('Content-Disposition:attachment; filename="downloaded.jpg"') / /表示された名前をダウンロードし、形式に注意してください
- readfile('my.jpg');
- // そして、情報を送信する前のヘッダーで設定されたタイプでこのファイルを出力すると、ダウンロード ボックスがポップアップします
- //は、サーバーに置きます My.jpg がダウンロードされ、ダウンロード表示と保存名がデフォルトで download.jpg
- ?>
コードをコピー
いわゆるテキストファイルのダウンロードとは、テキスト ファイルへのリンクをクリックしてもファイルは開きません。このファイルの代わりにダウンロード ダイアログ ボックスが表示され、これが今日議論される主な問題です。ヘッダーを介して PHP がダウンロードをトリガーすることに関する PHP ヘルプ ドキュメントの指示は比較的単純ですが、インターネット上にはこの点に関する記事がほとんどなく、多くの記事では期待した効果が得られません。
正確な観点から見ると、PHP ドキュメントはテキスト ファイルのダウンロードをトリガーするために必要な 3 つのステートメントを簡潔にリストしているため、最も正確です。
-
- // PDF を出力します
- header('Content-type: application/pdf');
- // これは、downloaded.pdf という名前になります
- header('Content-処理: filename="downloaded.pdf"');
- // PDF ソースは、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と送信されたページが出力したテキストの混合ファイルになります。ページ。
ここで私は注意深い観察を欠いており、何かが間違っていることに気づいてすぐにコードをチェックしましたが、上記のテキストが必要なものであることがわかりませんでした。コンテンツのこの部分を発見した後、あなたはすぐに思いつくかもしれません。この問題を解決する方法は、送信されたページのテキスト コンテンツの出力をオフにすることです。
問題は解決され、テキスト ファイルのリンクをクリックするとダウンロード ダイアログ ボックスがトリガーされます。
|