URL-адрес файла общего доступа Dropbox

Я разрабатываю приложение для Android, которое использует Dropbox для организации файлов. Я изучаю API Dropbox, но его описание и помощь ограничены, так как нет документации по API Dropbox.

Я все еще хотел бы управлять файлами с некоторыми функциями, например размещение файла и получение файла из Dropbox. Теперь проблема заключается в том, что я помещаю некоторые файлы в общедоступную папку Dropbox, и мне нужен URL-адрес, чтобы поделиться с моими контактами в приложении. Но в API я не смог найти ни одной функции, которая возвращает веб-URL-адрес файла для обмена (как и в интерфейсе Deskotop в Dropbox, пользователь может получить общий URL-адрес для отправки друзьям).

Может ли кто-нибудь помочь мне понять, как поделиться этим файлом с контактами в приложении?

Или любой другой способ поделиться файлом с помощью Dropbox Android API?


person Ijaz Ahmed    schedule 23.04.2011    source источник
comment
Я нашел некоторую документацию: dropbox.com/developers/docs Вы имели в виду что-то другое?   -  person knpwrs    schedule 23.04.2011
comment
@KPthunder .. спасибо за ваш ответ ... я уже видел эту документацию, там не упоминается метод обмена, это мой вопрос. Спасибо   -  person Ijaz Ahmed    schedule 27.04.2011


Ответы (3)


Согласно изменениям, внесенным в DropBox, указанным здесь: https://www.dropbox.com/help/16/en Общедоступных папок больше не будет, вместо этого доступ к файлам можно будет осуществлять через Share Link.

Если вы используете 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);
}   
}

ОБНОВЛЕНИЕ: Дирадж Бхаскар, 20 июля 2014 г. Используйте следующую вспомогательную функцию вместе с указанной выше функцией. Поскольку 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. Это создаст правильные ссылки, готовые к загрузке.

Обновление от 25 июля 2014 г.: изменение URL-адресов общих ресурсов Dropbox
Предупреждение о том, каких URL следует ожидать
От команды Dropbox:

Мы хотели предупредить вас о грядущих изменениях в структуре URL-адресов общих ссылок Dropbox. Хотя это изменение не является частью API, оно может повлиять на приложения, которые манипулируют URL-адресами, возвращаемыми из конечной точки /shares, или типом ссылки «предварительный просмотр», возвращаемым раскрывающимся элементом Chooser.

Возвращаемые ссылки теперь будут иметь добавленный к ним ?dl=0.

Например, вместо https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx вы получите такие URL-адреса, как эта ссылка https://www.dropbox.com/s/99eqbiuiepa8y7n/Fluffbeast.docx?dl=0.

person MP23    schedule 16.03.2013
comment
Обновлена ​​функция getShareURL. Ваш метод приводил к сбою приложения с помощью NullPointerException, потому что больше не было поля заголовка с именем Location. - person Dheeraj Bhaskar; 20.07.2014
comment
Спасибо за обновление ответа - person MP23; 20.07.2014
comment
getShareUrl дает null, а DropBox создает такую ​​ссылку db.tt/icnETNj1j . Не могли бы вы предложить мне, как решить проблемы с общими ссылками - person Satyaki Mukherjee; 05.12.2016

Полезная тема на форумах 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, но это одна из функций, которые мне нужно разработать. Надеюсь, через один-два дня больше.

person Giulio Prisco    schedule 11.06.2011
comment
Большое спасибо за ответ, я проверю и потом скажу что-нибудь по этому поводу. я не получил ваш последний комментарий, что вы имеете в виду под более через один или два дня, я надеюсь ... функция разработана для обмена или вы все еще разрабатываете? Спасибо - person Ijaz Ahmed; 12.06.2011
comment
Я разрабатываю инструмент для загрузки любого файла в общую папку пользователя в Dropbox и публикации ссылки на Facebook или аналогичные сайты со стандартным текстовым заголовком, я опубликую код здесь, когда закончу. - person Giulio Prisco; 12.06.2011
comment
Могу ли я использовать общедоступный URL-адрес Dropbox в качестве источника в HTML5: ‹audio src=http:\\dropxboxABCEFD.mp3›? - person bouncingHippo; 23.08.2012

Я считаю, что URL-адрес выглядит следующим образом:

http://dl.dropbox.com/u/YOUR_DROPBOX_ID/ИМЯ_ВАШЕГО_ФАЙЛА

person Aleadam    schedule 23.04.2011
comment
Большое спасибо за ответ. Большое спасибо..., у меня есть pdf-файл с названием "Начало работы" в корневом каталоге Dropbox... и я попробовал этот URL-адрес dl.dropbox.com/u/mydropboxid/Getting Начал. И он не работает, и что такое 'u' в URL-адресе? "U" стоит перед YOUR_DROPBOX_ID... Большое спасибо за ответ. Спасибо - person Ijaz Ahmed; 25.04.2011
comment
@Ijaz Я только что заметил твой комментарий. Думаю, это из-за космоса. Попробуйте dl.dropbox.com/u/yourId/Getting%20Started . Я понятия не имею, почему "у", но это там. - person Aleadam; 29.05.2011