2

PHPスクリプトを使用してリモートサーバーからファイルをダウンロードする必要があります。問題は、私が受け取ったリンクが「 example.com?download=12345 」のように見えることです。したがって、ファイルを正しい拡張子で保存し、(せいぜい)元のファイル名を保持したいと思います。どうすればよいですか?皆さん、ありがとうございました!

4

3 に答える 3

8

HTTP 応答のContent-Dispositionヘッダーが存在する場合は、他のサーバーがファイルに必要とするファイル名が含まれます。

于 2011-03-04T15:40:36.513 に答える
0

@EricLaw (IE チームの) は、昨年 11 月の IEBlog に詳細な分析を投稿しました。彼の投稿は IE に焦点を当てていますが、基本はほとんどのブラウザーに当てはまります。

  • Content-Disposition ヘッダーを使用します (最もクリーンで、標準に準拠し、ファイル名を指定できます。次のいずれかと組み合わせることができます)
  • クエリ文字列を使用しないでください (常に実用的であるとは限りませんが、URL の書き換えで可能です)
  • 「目的の拡張子を使用して、最後に偽のクエリ文字列パラメーターを追加します」(少しハックですが、機能します)

ただし、ソース サーバーはこれを行う義務はありません。最も可能性の高いオプションはContent-Dispositionヘッダーです。それが存在しない場合は、正方形 1 に戻ります (ただし、その内容からファイルの種類を推測することはできます)。

于 2011-03-04T15:43:17.227 に答える
0

curl を使用している場合、応答ヘッダーは実際のファイル名を返す必要があります。ファイル ダウンロードのヘッダーは次のようになります。

'Content-Disposition: attachment; filename="downloaded.pdf"'
于 2011-03-04T15:44:02.420 に答える