2014-01-24 68 views
34

Dropbox可以通过卷发(EX:curl -O https://dl.dropboxusercontent.com/s/file.ext)以编程方式轻松下载单个文件。对于一个文件夹(普通目录文件夹,不是压缩文件)来说有点麻烦。与文件相对的文件夹共享链接不直接链接到压缩文件夹(Dropbox在下载文件之前自动压缩文件夹)。看起来你可以在链接的末尾添加?dl=1,因为这将直接在浏览器中开始下载。然而,这指向了一个中间html文档,该文档重定向到实际的zip文件夹,似乎并不适用于curl。反正有curl通过共享链接下载文件夹吗?我意识到最好的解决方案是使用Dropbox api,但是对于这个项目来说,保持它尽可能简单是很重要的。此外,该解决方案必须合并到bash shell脚本中。使用卷曲通过共享链接(非公共链接)下载Dropbox文件夹

回答

70

通过使用-L选项,似乎可以使用卷曲。这迫使curl遵循重定向。此外,指定带有.zip扩展名的输出名称很重要,因为默认值将是一个不带扩展名的随机字母数字名称。最后,不要忘记将?dl=1添加到链接的末尾。没有它,卷曲将永远不会到达重定向页面。

curl -L -o newName.zip https://www.dropbox.com/sh/[folderLink]?dl=1 
+6

尼斯尖+1,我没有检查出的Dropbox API在很长一段时间了,真不知道你可以下载整个文件夹。我几乎低估了这一点,只是因为你是一个usc粉丝。 :D(亚利桑那野猫=#1!) –

+0

哈!感谢您的投票! – USCFan13

+0

您不需要指定输出名称。您可以,但您也可以保留Dropbox发送的远程文件名或文件夹名称。看到我的答案。 – bshea

5

除非您指定了密码保护链接,否则共享链接仍然是“公共”的?

1:你直接的问题是Curl没有遵循重定向。
Dropbox没有使用重定向这么多,但似乎这样做经常这些天。

2 :(可选)Dropbox已经发送了内容处置标题及其Dropbox文件名。
如果您使用正确的卷曲标志,没有理由指定文件名。
(除非你想强迫它(使用-o),到别的东西。)

在卷曲只要使用此:

curl https://www.dropbox.com/sh/AAbbCCEeFF123?dl=1 -O -J -L 

这将保存远程文件名,并按照任何重定向(3XX重定向代码)。

不要忘记将参数?dl=0更改为?dl=1
这同一条线上既适用于单独的共享文件或整个文件夹。
(文件夹将自动保存为.Zip - 基于文件夹名称)。

请教:https://curl.haxx.se/docs/manpage.html#OPTIONS(参见:-O-J-L

相关问题