Dropbox共享文件URL

时间:2011-04-23 16:47:43

标签: android share dropbox

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

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

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

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

3 个答案:

答案 0 :(得分:13)

根据在这里提到的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);
}   
}

更新时间:2014/07/20作者Dheeraj Bhaskar 使用以下辅助函数以及上述函数。 由于DropBox开始发送缩短的链接,因此获得正确的链接会有点问题。 现在,我正在使用这种方法:

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

    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/07/25:Dropbox共享网址的更改
关于期望的URL类型的提醒 来自Dropbox小组:

  

我们想让您了解即将对URL进行的更改   Dropbox共享链接的结构。虽然不是API的一部分,但是   更改可能会影响操纵从中返回的URL的应用程序   / shares端点或Chooser返回的“预览”链接类型   落英寸

     

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

     

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

答案 1 :(得分: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目录并使用您的accound UID构建它的公共URL。然后,它回显到控制台的URL。

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

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

答案 2 :(得分:1)