使用curl通过共享链接下载Dropbox文件夹(不是公共链接)

USC*_*n13 40 unix macos bash curl dropbox

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

USC*_*n13 88

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

curl -L -o newName.zip https://www.dropbox.com/sh/[folderLink]?dl=1
Run Code Online (Sandbox Code Playgroud)

  • 很好的提示+1,我很久没有检查掉Dropbox api,真的不知道你可以下载整个文件夹.我差点因为你是一名粉丝而投票.:D(亚利桑那野猫队=#1!) (7认同)
  • 那个该死的`-L`,我的兄弟们......这很重要。 (4认同)

bsh*_*hea 10

  1. 遵循重定向(使用-L).您当前的问题是Curl没有关注重定向.

  2. 设置文件名.(可选的)

    • Dropbox已经发送了带有Dropbox文件名的Content-Disposition标头.
      如果使用正确的curl标志,则没有理由指定文件名.
    • 相反,您可以使用您选择的内容强制使用文件名.

使用以下命令之一:

curl https://www.dropbox.com/sh/AAbbCCEeFF123?dl=1 -O -J -L
Run Code Online (Sandbox Code Playgroud)

保留/写入远程文件名(-O,-J)并遵循任何重定向(-L).

  • 同一行适用于单独共享文件或整个文件夹.
  • 文件夹将.zip自动保存(基于文件夹名称).
  • 不要忘记将参数更改?dl=0?dl=1(请参阅注释).

要么:

curl https://www.dropbox.com/sh/AAbbCCEeFF123?dl=1 -L -o [filename]
Run Code Online (Sandbox Code Playgroud)

按照redirect(-L)并设置-o您选择的文件名().



注意:-J一般使用标志:

警告:明智地使用此选项,尤其是在Windows上.恶意服务器可以向您发送可能由Windows或某些第三方软件自动加载的DLL或其他文件的名称.

有关更多信息,请参阅:https://curl.haxx.se/docs/manpage.html#OPTIONS(请参阅:-O,-J,-L,-o).