我如何知道如何命名使用 HTTP 下载的文件?
How do I know what to name a file downloaded using HTTP?
我正在 Python 中创建一个 HTTP 客户端下载器。我能够正确下载 http://www.google.com/images/srpr/logo11w.png 之类的文件就好了。但是,我不确定实际上 name 是什么东西。
URL 末尾当然有文件名,但这总是可靠的吗?
如果我没记错的话,wget 使用以下启发式:
- 如果
Content-Disposition
header 存在,从那里获取文件名。
- 如果 URL 的文件名部分存在(例如
http://myserver/filename
),则使用它。
- 如果没有文件名部分(例如
http://www.google.com
),从 Content-Type
header 派生文件名(例如 index.html
为 text/html
)
- 在所有情况下,如果此文件名已存在于目录中,请使用数字后缀,例如
index (1).html
,或覆盖,具体取决于配置。
还有许多其他标志可以控制其他启发式算法,例如为 ASP/DHTML content-types.
创建 .html
简而言之,这真的取决于你想走多远。对于大多数人来说,做前两个+基本的Content-Type->name mapping应该就够了。
我正在 Python 中创建一个 HTTP 客户端下载器。我能够正确下载 http://www.google.com/images/srpr/logo11w.png 之类的文件就好了。但是,我不确定实际上 name 是什么东西。
URL 末尾当然有文件名,但这总是可靠的吗?
如果我没记错的话,wget 使用以下启发式:
- 如果
Content-Disposition
header 存在,从那里获取文件名。 - 如果 URL 的文件名部分存在(例如
http://myserver/filename
),则使用它。 - 如果没有文件名部分(例如
http://www.google.com
),从Content-Type
header 派生文件名(例如index.html
为text/html
) - 在所有情况下,如果此文件名已存在于目录中,请使用数字后缀,例如
index (1).html
,或覆盖,具体取决于配置。
还有许多其他标志可以控制其他启发式算法,例如为 ASP/DHTML content-types.
创建 .html简而言之,这真的取决于你想走多远。对于大多数人来说,做前两个+基本的Content-Type->name mapping应该就够了。