【问题标题】:Use curl to download a Dropbox folder via shared link (not public link)使用 curl 通过共享链接(不是公共链接)下载 Dropbox 文件夹
【发布时间】:2014-02-14 20:28:59
【问题描述】:

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

【问题讨论】:

    标签: macos bash unix curl dropbox


    【解决方案1】:

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

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

    【讨论】:

    • 不错的提示+1,我好久没有查看dropbox api了,真的不知道你可以下载整个文件夹。仅仅因为你是南加州大学的粉丝,我几乎对此投了反对票。 :D(亚利桑那野猫队 = #1!)
    • 您不需要指定输出名称。您可以,但您也可以保留 Dropbox 发送的远程文件名或文件夹名称。看我的回答。
    • 那个该死的-L,伙计们……这很重要。
    • 不需要 .zip 我的朋友,我可以这样做: curl -L -o file_name.anyextension dropbox.com/sh/[folderLink]?dl=1
    【解决方案2】:
    1. 关注重定向(使用-L)。您的直接问题是 Curl 没有遵循重定向。

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

    • Dropbox 已经发送了一个 Content-Disposition Header 及其 Dropbox 文件名。
      如果您使用正确的 curl 标志,则没有理由指定文件名。
    • 相反,您可以使用您选择的名称来强制使用文件名。

    使用以下命令之一:

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

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

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

    或者:

    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)。

    【讨论】:

    • 谢谢并同意。刚刚测试过了。但是,它并没有用..现在保持原样。
    猜你喜欢
    • 2021-09-18
    • 2021-08-25
    • 1970-01-01
    • 2013-12-12
    • 2015-03-25
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多