2011-04-23 171 views
9

我正在开发Android应用程序,并使用Dropbox组织文件。我正在探索Dropbox API,但其描述和帮助是有限的,因为没有关于Dropbox API的文档。Dropbox共享文件网址

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

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

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

+1

我发现了一些文档:https://www.dropbox.com/developers/docs 你是指别的东西吗? – KPthunder 2011-04-23 17:16:08

+0

@KPthunder ..谢谢你的回复...我已经看到这个文档已经没有方法提及共享那是我的问题。 谢谢 – 2011-04-27 09:05:21

回答

12

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

如果你使用Android的DropBox核心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); 
} 
} 

UPDATE:由Dheeraj巴斯卡尔 使用下面的辅助函数非常久远上述功能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或线程来完成课程。这将产生准备下载正确的链接

更新2014/07/25:变化的dropbox共享URL,
的那种URL的抬头期待
从Dropbox的团队:

我们想给你一个关于即将到来的修改Dropbox共享链接的URL 结构的提示。虽然不是API的一部分,但 更改可能会影响操纵从 /shares端点返回的URL或由Chooser 插入返回的“预览”链接类型的应用程序。

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

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

+1

已更新getShareURL函数。您的方法因'NullPointerException'而崩溃应用程序,因为不再有名为Location的头部字段。 – 2014-07-20 06:57:51

+1

感谢您更新答案 – MP23 2014-07-20 07:10:15

+0

getShareUrl给出null,DropBox生成这种链接https://db.tt/icnETNj1j。你能否建议我如何解决共享链接问题 – 2016-12-05 10:06:24

0
+0

非常感谢你的回复。非常感谢...,我有一个名为“入门”的PDF文件在我的Dropbox根..我试过这个网址http://dl.dropbox.com/u/mydropboxid/Getting开始。它不工作,和URL中的'你'是什么? 'U'在YOUR_DROPBOX_ID之前...非常感谢您的回复。谢谢 – 2011-04-25 09:31:15

+0

@Ijaz我刚刚注意到你的评论。我相信那是因为空间。尝试http://dl.dropbox.com/u/yourId/Getting%20Started。我不知道为什么'你',但它在那里。 – Aleadam 2011-05-28 20:02:40

1

在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的接口实现,但这是我需要开发的功能之一。更希望在一两天内。

+0

谢谢你的回答,我会检查然后再说一些。我没有得到你最后的评论,你的意思是“更多在一两天我希望”..这个功能是为共享而开发的,或者你还在开发?谢谢 – 2011-06-12 10:25:38

+0

我正在开发一个工具,将任何文件上传到Dropbox上的用户公用文件夹,并将链接发布到Facebook或具有标准文本标题的类似网站,我将在此处发布代码。 – 2011-06-12 13:45:20

+0

我可以使用Dropbox的公共网址作为HTML5的源代码: