API Dropbox получает прямой URL-адрес файла для потоковой передачи

Я использую API Dropbox для удаления файлов в общедоступной папке с конечной точкой https://www.dropbox.com/developers/documentation/http/documentation#files-list_folder

https://api.dropboxapi.com/2/files/list_folder

Ответ примерно такой:

{
"entries": [
    {
        ".tag": "file",
        "name": "01.mp4",
        "path_lower": "/video/01.mp4",
        "path_display": "/video/01.mp4",
        "parent_shared_folder_id": "3022865105",
        "id": "id:FDeU6KOzmRUAAAAAAAAABw",
        "client_modified": "2022-09-14T15:54:42Z",
        "server_modified": "2022-09-14T16:06:36Z",
        "rev": "5e8a55037c991b42d42d1",
        "size": 12347528,
        "sharing_info": {
            "read_only": false,
            "parent_shared_folder_id": "3022865105",
            "modified_by": "dbid:AACtZetM6hKYpGsPZvtNDZUFRldH8r35OSk"
        },
        "is_downloadable": true,
        "content_hash": "7e6d5e0d1947523808762a6fc34fec7651393ef9d4f4ea2a64fb71acaf3a1240"
    },
    {
        ".tag": "file",
        "name": "02.mp4",
        "path_lower": "/video/02.mp4",
        "path_display": "/video/02.mp4",
        "parent_shared_folder_id": "3022865105",
        "id": "id:FDeU6KOzmRUAAAAAAAAACA",
        "client_modified": "2022-09-14T15:54:42Z",
        "server_modified": "2022-09-14T16:06:36Z",
        "rev": "5e8a55037c992b42d42d1",
        "size": 18791452,
        "sharing_info": {
            "read_only": false,
            "parent_shared_folder_id": "3022865105",
            "modified_by": "dbid:AACtZetM6hKYpGsPZvtNDZUFRldH8r35OSk"
        },
        "is_downloadable": true,
        "content_hash": "93d33bf10fa4e5c340dac84ebafb54d0b2759cc6e801da8ab03ae14783365fac"
    }
],
"cursor": "AAGUGbHG7ju_3pegzOTPruYbexWxEXYyJGNt5Rt1Frj8QAj_JFDTwppfDTneAq-pMfGEbX4i-aDRndn8j-MrAiLy4mCUDc8-GU_XsUdAoShGXtzWKDsDaQwWCHFmhOo0bBuXElarr3Rdil9pTMqkMcfG2hSZPeepDL_omI0Oo0a-_suATq_zoBrH-o2zNKe9-udR2UrsgPuMl9toei-Tt19FCLHX4uzyT6xAXJjFKnWdfj7y3lgyoxrJqtQPVBc1WT0",
"has_more": false
}

Мой вопрос заключается в том, как мне получить прямую ссылку на каждый файл таким образом, чтобы я мог использовать ее (скажем) в теге видео html5?

Когда я щелкаю правой кнопкой мыши файл в папке Dropbox, URL-адрес выглядит примерно так:

https://www.dropbox.com/s/305pjdhly2w948y/01.mp4?dl=0

Как мне получить такой прямой URL-адрес из этого ответа?

Разве вам не нужно сначала поделиться этим? dropbox.com/developers/documentation/http/…

robertklep 14.09.2022 19:37

Но я хочу получить URL-адрес для каждого файла в общедоступной папке. Означает ли это, что мне нужно запускать get_shared_link_file для каждого файла, который я получаю в ответ из папки?

Toniq 14.09.2022 19:40
/get_temporary_link должен работать, даже если им не поделились. Конечно ссылка временная, через несколько часов после создания выдает ошибку 410. dropbox.com/developers/documentation/http/…
GrafiCode 14.09.2022 19:44

Вы ищете dropbox.com/developers/documentation/http/…?

code 14.09.2022 19:45

@GrafiCode - мне не нужна временная ссылка, я хочу ссылку с неограниченным сроком действия, если это возможно. Я делаю свою папку общедоступной, щелкнув правой кнопкой мыши саму папку и выбрав «Поделиться». Но, как я уже сказал в своем посте, я читаю папку, чтобы сначала получить все файлы (это работает), а затем мне нужно построить/получить прямой URL-адрес для каждого файла.

Toniq 14.09.2022 19:50

@Toniq, если вы сделали свою папку общедоступной, вы получите ссылку на эту папку. Если вы перейдете по этой ссылке в приватном режиме/режиме инкогнито, вы должны увидеть все свои файлы. Наведите на них курсор, чтобы увидеть, как выглядит их URL. Вы должны иметь возможность создать URL-адрес для каждого файла на основе этого.

robertklep 14.09.2022 19:54

@robertklep - я написал пример URL-адреса файла, когда я щелкаю правой кнопкой мыши в своем сообщении (dropbox.com/s/305pjdhly2w948y/01.mp4?dl=0). Это тот самый файл из папки response. Я не понимаю, как я могу сделать это из полученных данных ответа.

Toniq 14.09.2022 20:00

@Toniq, это URL-адрес файла, я говорил об URL-адресе папки. Это явно разные.

robertklep 14.09.2022 20:02

Извините, я не понимаю, что вы имеете в виду. Я могу успешно прочитать папку и получить файлы внутри, как я написал. Но как мне получить/построить прямую (воспроизводимую) ссылку для каждого файла из этого ответа? Это прямая ссылка в моей папке, которую я читаю (dropbox.com/s/305pjdhly2w948y/01.mp4?dl=0), но в ответе папки нигде нет этой части: 305pjdhly2w948y

Toniq 14.09.2022 20:07

@Toniq, эта ссылка не ведет прямо на видео. Открыв эту ссылку, вы попадете на веб-сайт Dropbox, где видео (любезно предоставленное Dropbox) можно посмотреть во встроенном проигрывателе. Опять же, это не прямая связь. Даже если вы проверите видеоплеер, вы обнаружите, что источником видео является blob, а не прямая ссылка на какой-либо файл.

GrafiCode 14.09.2022 21:42
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
10
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Чтобы получить временную прямую ссылку на файл, вы должны вызвать /2/files/get_temporary_link:

https://www.dropbox.com/developers/documentation/http/documentation#files-get_temporary_link

API Dropbox не предлагает именно такую ​​временную версию, но вы можете создать общую ссылку через /2/sharing/create_shared_link_with_settings:

https://www.dropbox.com/developers/documentation/http/documentation#sharing-create_shared_link_with_settings

Или, чтобы получить существующие общие ссылки, используйте /2/sharing/list_shared_links:

https://www.dropbox.com/developers/documentation/http/documentation#sharing-list_shared_links

Это тот же тип ссылки, которую возвращает веб-сайт Dropbox.

Обратите внимание, что эти общие ссылки не связаны напрямую с данными файла. Они ссылаются на страницу предварительного просмотра HTML для файла. Вместо этого вы можете изменить их для прямого или необработанного доступа к файлам, как описано здесь:

https://help.dropbox.com/share/force-download

Я пробовал list_shared_links, но получаю пустой результат. Я включил разрешение sharing.read, просто результат в той же папке пуст (я использовал путь: /video): {"links": [], "has_more": false} Моя папка открыта для общего доступа.

Toniq 14.09.2022 20:29

Я получаю то же самое, когда тестирую здесь (пустой результат): dropbox.github.io/dropbox-api-v2-explorer/… Если я читаю это, кажется, что вы не можете передать папку: dropboxforum.com/t5 /Dropbox-API-Support-Feedback/… Я не понимаю ответа: «Итак, указание пути к папке не приведет к отображению общих ссылок для файлов внутри этой папки. Если вам нужны общие ссылки для файла, необходимо указать полный путь к файлу». У меня нет полного пути к моим файлам с помощью API.

Toniq 14.09.2022 20:42

Конечная точка /2/sharing/list_shared_links возвращает только существующие общие ссылки. Ответ, который вы получили с помощью "links": [],, указывает на то, что вызов был успешным, но по этому пути не было ссылок для возврата.

Greg 14.09.2022 22:29

Невозможно использовать /2/sharing/list_shared_links для отображения общих ссылок для элементов внутри определенной папки. Если вы укажете конкретный путь к папке, будут возвращены ссылки только на эту папку, а не на ее содержимое. Чтобы получить общие ссылки для всего, вам нужно будет полностью опустить путь. Чтобы получить общие ссылки для определенного файла, вам нужно указать путь к этому файлу, который вы можете получить из значения path_lower для файла, возвращаемого /2/files/list_folder[/continue], например, как показано на ваш вопрос.

Greg 14.09.2022 22:30

Обратите внимание, что это позволяет вам получать только существующие общие ссылки. Если необходимые общие ссылки еще не существуют, вам нужно создать их, используя /2/sharing/create_shared_link_with_settings, как описано в моем ответе выше.

Greg 14.09.2022 22:31

Другие вопросы по теме