2011-04-23 127 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的源代碼:

相關問題