我需要使用我的 PHP 脚本从远程服务器下载文件。问题是我收到的链接看起来像“ example.com?download=12345 ”。所以我想用正确的扩展名保存文件,并且(充其量)保留它的原始文件名。我该怎么做呢?谢谢你们!
问问题
2101 次
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 回答