Dropbox 共享文件 URL

Posted

技术标签:

【中文标题】Dropbox 共享文件 URL【英文标题】:Dropbox Sharing file URL 【发布时间】:2011-08-11 13:17:06 【问题描述】:

我正在为 android 开发一个应用程序,它使用 Dropbox 来组织文件。我正在探索 Dropbox API,但它的描述和帮助是有限的,因为 Dropbox API 没有文档。

我仍然希望通过某些功能来管理文件,例如放置文件和从 Dropbox 获取文件。现在的问题是当我将一些文件放在 Dropbox public 文件夹中时,我需要一个 URL 来共享给应用程序中的联系人。但在 API 中,我找不到任何返回要共享文件的 Web URL 的函数(就像在 Dropbox 的桌面界面中,用户可以获得共享 URL 以发送给朋友)。

有人可以帮我弄清楚如何与应用程序中的联系人共享该文件吗?

或任何其他使用 Dropbox Android API 共享文件的方式?

【问题讨论】:

我找到了一些文档:dropbox.com/developers/docs你指的是别的东西吗? @KPthunder .. 感谢您的回复...我已经看过此文档,但没有提到共享方法,这是我的问题。谢谢 【参考方案1】:

我相信网址如下:

http://dl.dropbox.com/u/YOUR_DROPBOX_ID/YOUR_FILE_NAME

【讨论】:

非常感谢您的回复。非常感谢...,我的 Dropbox 根目录中有一个名为“Getting Started”的 pdf 文件。我尝试了这个 url dl.dropbox.com/u/mydropboxid/GettingStarted 。它不起作用,URL 中的 'u' 是什么? 'U' 在 YOUR_DROPBOX_ID 之前...非常感谢您的回复。谢谢 @Ijaz 我刚刚注意到您的评论。我相信这是因为空间。试试dl.dropbox.com/u/yourId/Getting%20Started。我不知道为什么是“u”,但它就在那里。【参考方案2】:

Dropbox 论坛中的一个有用帖子:

http://forums.dropbox.com/topic.php?id=37700&replies=7#post-326432

如果文件的公共链接总是

dl.dropbox.com/u/<your users uid>/<path under /Public>/filename

然后我们就可以使用 API 在代码中获取和构建公共 URL。

也许这也有帮助:将文件上传到 Dropbox 并复制公共地址。此脚本将文件上传到您的 /Public 目录并使用您的帐户 UID 来构建它的公共 URL。然后,它将 URL 回显到控制台。

https://github.com/sylvainfilteau/dropbox-api-command/commit/6aa817c79220c5de4ff5339cd01ea8b528bcac36

我的 Dropbox 接口实现还没有实现,但这是我需要开发的功能之一。我希望在一两天内更多。

【讨论】:

非常感谢您的回答,我会检查一下,然后说些什么。我没有得到您的最后评论,您所说的“我希望在一两天内更多”是什么意思..该功能是为分享而开发的,还是您仍在开发中?谢谢 我正在开发一种工具,可以将任何文件上传到 Dropbox 上的用户公共文件夹,并将链接发布到 Facebook 或具有标准文本标题的类似网站,完成后我将在此处发布代码。跨度> 我可以使用 Dropbox 公共 URL 作为 html5 中的来源吗: ?【参考方案3】:

根据此处提到的对 DropBox 所做的更改:https://www.dropbox.com/help/16/en 将不再有公共文件夹,而是可以通过共享链接访问文件。

如果您使用 Android DropBox Core Api,则可以通过以下方式检索共享链接:

// Get the metadata for a directory
Entry dirent = mApi.metadata(mPath, 1000, null, true, null);

for (Entry ent : dirent.contents) 

String shareAddress = null;
if (!ent.isDir) 
    DropboxLink shareLink = mApi.share(ent.path);
    shareAddress = getShareURL(shareLink.url).replaceFirst("https://www", "https://dl");
    Log.d(TAG, "dropbox share link " + shareAddress);
   

更新:Dheeraj Bhaskar 于 2014 年 7 月 20 日发布 将以下辅助函数与上述函数一起使用。 由于 DropBox 开始发送缩短的链接,因此获得正确的链接有点问题。 目前,我正在使用这种方法:

我们只需加载 URL,按照重定向并获取新 URL。

    String getShareURL(String strURL) 
    URLConnection conn = null;
    String redirectedUrl = null;
    try 
        URL inputURL = new URL(strURL);
        conn = inputURL.openConnection();
        conn.connect();

        InputStream is = conn.getInputStream();
        System.out.println("Redirected URL: " + conn.getURL());
        redirectedUrl = conn.getURL().toString();
        is.close();

     catch (MalformedURLException e) 
        Log.d(TAG, "Please input a valid URL");
     catch (IOException ioe) 
        Log.d(TAG, "Can not connect to the URL");
    

    return redirectedUrl;

注意:当然,所有这些都应该在 AsyncTask 或 Thread 中完成。这将生成可供下载的正确链接

2014 年 7 月 25 日更新:Dropbox 共享 URL 发生变化 预期的 URL 类型提示来自 Dropbox 团队:

我们想让您提前了解即将对 URL 进行的更改 Dropbox 共享链接的结构。虽然不是 API 的一部分,但 更改可能会影响操纵从 /shares 端点或选择器返回的“预览”链接类型 随叫随到。

返回的链接现在将附加一个 ?dl=0。

例如,而不是 https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx,你会的 接收网址 喜欢这个链接 https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx?dl=0.

【讨论】:

更新了 getShareURL 函数。您的方法是使用 NullPointerException 使应用程序崩溃,因为不再有名为 Location 的标头字段。 感谢您更新答案 getShareUrl 给出 null,DropBox 生成这种链接 db.tt/icnETNj1j 。你能建议我如何解决共享链接问题

以上是关于Dropbox 共享文件 URL的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从共享 Dropbox 文件夹链接下载内容

ruby 从Dropbox共享文件

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

我在dropbox建立了一个共享文件夹,然后邀请对方加入,但是对方无法打开?怎么处理?

在 android app 中访问 Dropbox、google drive、microsoft onedrive 等中的云共享文件

Dropbox for Mac(网络共享工具)