Dropbox可以通过curl以编程方式下载单个文件(EX:curl -O https://dl.dropboxusercontent.com/s/file.ext
)。对于文件夹(常规目录文件夹,而不是压缩)来说,这有点棘手。文件夹的共享链接(而不是文件)不直接链接到压缩文件夹(Dropbox会在下载之前自动压缩文件夹)。看起来你可以在链接的末尾添加?dl=1
,因为这将直接在浏览器中开始下载。但是,这指向一个中间html文档,它重定向到实际的zip文件夹,似乎不适用于curl。无论如何使用curl通过共享链接下载文件夹?我意识到最好的解决方案是使用Dropbox api,但对于这个项目,保持尽可能简单是很重要的。此外,必须将解决方案合并到bash shell脚本中。
答案 0 :(得分:81)
使用-L
选项似乎可以使用curl。这会强制卷曲跟随重定向。此外,指定具有.zip扩展名的输出名称非常重要,因为默认情况下将是一个没有扩展名的随机字母数字名称。最后,不要忘记将?dl=1
添加到链接的末尾。没有它,curl永远不会到达重定向页面。
curl -L -o newName.zip https://www.dropbox.com/sh/[folderLink]?dl=1
答案 1 :(得分:9)
关注重定向(使用-L
)。您当前的问题是Curl没有关注重定向。
设置文件名。 (可选)
使用以下命令之一:
curl https://www.dropbox.com/sh/AAbbCCEeFF123?dl=1 -O -J -L
保留/写入远程文件名(-O
,-J
)并遵循任何重定向(-L
)。
.zip
(基于文件夹名称)。?dl=0
更改为?dl=1
(请参阅评论)。OR:
curl https://www.dropbox.com/sh/AAbbCCEeFF123?dl=1 -L -o [filename]
关注重定向(-L
)并设置您选择的文件名(-o
)。
注意:一般使用-J
标志:
警告:明智地使用此选项,尤其是在Windows上。恶意服务器可以向您发送可能由Windows或某些第三方软件自动加载的DLL或其他文件的名称。
请参阅:https://curl.haxx.se/docs/manpage.html#OPTIONS(请参阅:-O,-J,-L,-o)了解更多信息。