通过HTTP获取文件创建日期

con*_*q18 10 language-agnostic attributes http download file-attributes

给定web服务器上的文件(例如,http://foo.com/bar.zip - >只能通过HTTP访问),有没有办法获取日期属性(例如,日期[创建,修改])而无需下载整个档案首先?

现在,我下载存档并以编程方式读取属性.麻烦的是存档是几十个MiB,因此下载整个内容并最终只读取几个字节的信息似乎浪费资源.

我意识到带宽实际上是免费的,但我不喜欢浪费任何情况.

iho*_*rko 9

尝试从标题中读取Last-Modified

  • 查看标题跟踪,看起来我需要的所有信息都已提供。我不敢相信我没有先看标题。:) 谢谢! (2认同)

Jan*_*omä 8

请务必使用HTTP HEAD请求而不是HTTP GET请求来仅读取HTTP标头.如果您执行HTTP GET,即使您决定只检查HTTP标头,也会下载整个文件.


Ben*_*fez 5

为了简单起见,这里是来自@ihorko 和@JanThom\xc3\xa4 的现有(完美)答案的汇编,它使用了curl。当然,也可以使用其他选项,但这里有一个功能齐全的答案。

\n\n

将curl 与-I选项一起使用:

\n\n
\n

-I, --head
\n (HTTP/FTP/FILE) 仅获取 HTTP 标头!HTTP 服务器具有 HEAD 命令,该命令只获取文档的标题。当用于 FTP 或 FILE 文件时,curl 仅显示文件大小和上次修改时间。

\n
\n\n

另外,-s这里的选项也很好:

\n\n
\n

-s, --silent
\n 静音或安静模式。不显示进度表或错误消息。让 Curl 静音。它仍然会输出您要求的数据,甚至可能输出到终端/标准输出,除非您重定向它。

\n
\n\n

因此,像这样的事情就可以解决问题:

\n\n
curl -sI http://foo.com/bar.zip | grep 'Last-Modified' | cut -d' ' -f 2-\n
Run Code Online (Sandbox Code Playgroud)\n