无需下载即可获取Content-Disposition文件名

时间:2015-12-17 10:56:33

标签: linux windows batch-file curl cmd

我目前正在使用

curl -w "%%{filename_effective}" "http://example.com/file.jpg" -L -J -O -s

从下载地址打印服务器强加的文件名,但它将文件下载到目录。如何在不下载文件的情况下获取文件名?

1 个答案:

答案 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