使用PHP下载文件。如何获得FILENAME?

时间:2011-03-04 15:37:50

标签: php file download resolve

我需要使用PHP脚本从远程服务器下载文件。问题是我收到的链接看起来像“ example.com?download=12345 ”。所以我想用正确的扩展名保存文件,并且(最好)保留它的原始文件名。我该怎么做? 谢谢大家!

3 个答案:

答案 0 :(得分:7)

HTTP响应中的Content-Disposition标头(如果存在)将包含其他服务器希望文件具有的文件名。

答案 1 :(得分:0)

@EricLaw(IE团队)去年11月发布了detailed analysis of this on the IEBlog。虽然他的帖子专注于IE,但大多数浏览器的基础知识仍然存在:

  • 使用Content-Disposition标头(最干净,符合标准,允许您指定文件名;可以与以下任意一种结合使用)
  • 不要使用查询字符串(并不总是实用 - 但可以使用URL重写)
  • “在末尾添加一个带有所需扩展名的伪造查询字符串参数”(有点黑客,但有效)

但是,源服务器没有义务执行任何此操作;最可能的选项是Content-Disposition标题。如果不存在,则返回到1(尽管您可以从其内容中猜出文件类型)。

答案 2 :(得分:0)

如果您使用curl,则响应标头应返回实际文件名。文件下载的标题如下所示:

'Content-Disposition: attachment; filename="downloaded.pdf"'