我目前正在使用
curl -w "%%{filename_effective}" "http://example.com/file.jpg" -L -J -O -s
从下载地址打印服务器强加的文件名,但它将文件下载到目录。如何在不下载文件的情况下获取文件名?
答案 0 :(得分:1)
在批处理文件中执行HEAD
请求:
curl -w "%%{filename_effective}" "http://example.com/file.jpg" -I -X HEAD -L -J -O -s
这样,根据RFC2616:
,将不会下载所请求的文件本身HEAD方法与GET相同,只是服务器不能在响应中返回消息体。 (...)此方法可用于获取有关请求所隐含的实体的元信息,而无需转移实体主体本身。
请注意,这将创建两个文件,尽管只收到了标题数据curl
。我知道您的主要兴趣不是下载(可能是许多和/或大)文件,所以我想这应该没问题。
修改:关于后续问题:
真的没有办法只获取内容处理文件名而不下载任何东西吗?
单独使用curl
似乎不可能,我担心。让curl
不输出文件的唯一方法是-o NUL
(Windows)例程,如果您这样做,%{filename_effective}
也会变为NUL
。