如何执行 cURL HTTP Post 请求来下载文件然后保存该文件?

CBr*_*uce 5 download http curl

环境:
Windows 64 cURL build
C:>curl64.exe -V(ersion)
-curl 7.53.1 (x86_64-w64-mingw32) libcurl/7.53.1 WinSSL zlib/1.2.8 WinIDN libssh2/1.7.0_DEV
- 协议:dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
- 功能:IDN IPv6 大文件 SSPI Kerberos SPNEGO NTLM SSL libz

我的网站有一个用于文件下载的 PHP 包,需要 HTTP Post 来指定要下载的文件。

当我使用浏览器时,我会看到一个“打开/保存”对话框,我可以毫无问题地将文件保存到我的计算机上。当我使用 cURL 时,请求的文件只是流式传输到控制台。

如何执行 cURL HTTP Post 请求来下载文件然后保存它?

  • 有很多使用 Post 上传文件的示例...
  • 一般来说,有很多发帖的例子......
  • 有很多简单下载文件的示例(-O/o)...

但我找不到保存 Post 命令返回的文件的示例。

我尝试过这三个curl命令行:

C:>curl64.exe -d "download=XYZ.zip&email=&submit=Download" http://www.example.com/downloads/dl.php

C:>curl64.exe -d "download=XYZ.zip&email=&submit=Download" -O XYZ.zip http://www.example.com/downloads/dl.php
curl:远程文件名没有长度!

C:>curl64.exe -d "download=XYZ.zip&email=&submit=Download" http://www.example.com/downloads/dl.php > XYZ.zip
访问被拒绝。

在前两个示例中,文件内容被传输到控制台,而不是保存文件或给我一个保存文件的选项。

在第三个示例中,我尝试重定向输出,但收到“访问被拒绝”。错误。我是 Windows 系统的本地管理员。我尝试过不同的目录。仍然得到同样的错误。

CBr*_*uce 2

经过大量阅读(整晚)之后……我发现,当你精疲力尽时进行研究显然是不好的,而应该睡觉。[咧嘴笑]

早些时候,我看到太多 cURL 示例,其中一些使用 -O 选项,另一些使用 -o 选项进行文件下载。当一切对我来说都很模糊时,我没有意识到它们是两个不同的选择。在读了第一百遍 cURL 帮助后,我终于看到了区别:

  • -O 用于下载文件
  • -o 用于将 cURL 的输出重定向到文件而不是 stdout

该命令行的工作原理是:

C:\cURLtest>curl64.exe -d "download=XYZ.zip&email=&submit=Download" -o XYZ.zip http://www.example.com/downloads/dl.php

对于任何花时间研究这个问题的人(事实并非如此)......请原谅这个假人浪费你的时间。