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 回答