使用curl或wget命令行下载文件

3

如果之前已经问过这个问题并且它很简单,我表示歉意。

我正在尝试使用命令行从http网站下载文件到我的unix机器。我使用用户名和密码登录此网站。

假设我有这个链接(不是工作链接)http://www.abcd.org/portal/ABCPortal/private/DataDownload.action?downloadFile=&workspace.id=4180&datasetId=76999

假设我将此链接粘贴到浏览器中,会弹出一个框询问是否要保存它链接的zip文件(例如xyz.zip)。这些文件大小约为1GB。

我想通过命令行将此URL链接的zip文件下载到我的unix机器上。我尝试使用wget和curl等工具与上述类型的URL(提供用户名和密码)一起使用。我得到了html表单,但没有zip文件。是否有办法获取此类URL链接的zip文件?我不知道文件所在机器上的目录结构。

感谢您的帮助,

2个回答

5
我猜测您没有通过Accept-Encoding头文件。浏览器默认传递它,但在CLI工具中,您需要自己触发这些选项。
我不知道wget,但可以尝试使用curl(-v作为详细命令,以便您可以跟踪请求/响应头):
curl -v "http://www.abcd.org/portal/ABCPortal/private/DataDownload.action?downloadFile=&workspace.id=4180&datasetId=76999" -H "Accept-Encoding: gzip" > /tmp/yourZippedFile.gz
如果以上不是问题所在,也许您可以给出一个实际的网站示例,这样我们就可以在具体的示例中跟踪您的问题。没有看到HTTP流量,很难说。

1
谢谢!我需要下载ZIP并将编码更改为“Accept-Encoding:zip”,这样它就完美地工作了。 - MikeSchinkel

1

关于Windows curl的信息,我必须添加一个User-Agent:

curl -H "Accept-Encoding: gzip,deflate" -H "User-Agent: Mozilla/5.0 (Windows NT 5.1)" www.google.com > test3.gz

因为没有User-Agent,它不会给我一个gzip文件。

curl -H "Accept-Encoding: gzip,deflate" www.google.com > test


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接