使用 curl 通过共享链接(不是公共链接)下载 Dropbox 文件夹
Posted
技术标签:
【中文标题】使用 curl 通过共享链接(不是公共链接)下载 Dropbox 文件夹【英文标题】:Use curl to download a Dropbox folder via shared link (not public link) 【发布时间】: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 脚本中。
【问题讨论】:
【参考方案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】:
关注重定向(使用-L
)。您的直接问题是 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)。
【讨论】:
谢谢并同意。刚刚测试过了。但是,它并没有用..现在保持原样。以上是关于使用 curl 通过共享链接(不是公共链接)下载 Dropbox 文件夹的主要内容,如果未能解决你的问题,请参考以下文章