Я использую 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-адрес из этого ответа?
Но я хочу получить URL-адрес для каждого файла в общедоступной папке. Означает ли это, что мне нужно запускать get_shared_link_file для каждого файла, который я получаю в ответ из папки?
/get_temporary_link должен работать, даже если им не поделились. Конечно ссылка временная, через несколько часов после создания выдает ошибку 410. dropbox.com/developers/documentation/http/…Вы ищете dropbox.com/developers/documentation/http/…?
@GrafiCode - мне не нужна временная ссылка, я хочу ссылку с неограниченным сроком действия, если это возможно. Я делаю свою папку общедоступной, щелкнув правой кнопкой мыши саму папку и выбрав «Поделиться». Но, как я уже сказал в своем посте, я читаю папку, чтобы сначала получить все файлы (это работает), а затем мне нужно построить/получить прямой URL-адрес для каждого файла.
@Toniq, если вы сделали свою папку общедоступной, вы получите ссылку на эту папку. Если вы перейдете по этой ссылке в приватном режиме/режиме инкогнито, вы должны увидеть все свои файлы. Наведите на них курсор, чтобы увидеть, как выглядит их URL. Вы должны иметь возможность создать URL-адрес для каждого файла на основе этого.
@robertklep - я написал пример URL-адреса файла, когда я щелкаю правой кнопкой мыши в своем сообщении (dropbox.com/s/305pjdhly2w948y/01.mp4?dl=0). Это тот самый файл из папки response. Я не понимаю, как я могу сделать это из полученных данных ответа.
@Toniq, это URL-адрес файла, я говорил об URL-адресе папки. Это явно разные.
Извините, я не понимаю, что вы имеете в виду. Я могу успешно прочитать папку и получить файлы внутри, как я написал. Но как мне получить/построить прямую (воспроизводимую) ссылку для каждого файла из этого ответа? Это прямая ссылка в моей папке, которую я читаю (dropbox.com/s/305pjdhly2w948y/01.mp4?dl=0), но в ответе папки нигде нет этой части: 305pjdhly2w948y
@Toniq, эта ссылка не ведет прямо на видео. Открыв эту ссылку, вы попадете на веб-сайт Dropbox, где видео (любезно предоставленное Dropbox) можно посмотреть во встроенном проигрывателе. Опять же, это не прямая связь. Даже если вы проверите видеоплеер, вы обнаружите, что источником видео является blob, а не прямая ссылка на какой-либо файл.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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:
Или, чтобы получить существующие общие ссылки, используйте /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} Моя папка открыта для общего доступа.
Я получаю то же самое, когда тестирую здесь (пустой результат): dropbox.github.io/dropbox-api-v2-explorer/… Если я читаю это, кажется, что вы не можете передать папку: dropboxforum.com/t5 /Dropbox-API-Support-Feedback/… Я не понимаю ответа: «Итак, указание пути к папке не приведет к отображению общих ссылок для файлов внутри этой папки. Если вам нужны общие ссылки для файла, необходимо указать полный путь к файлу». У меня нет полного пути к моим файлам с помощью API.
Конечная точка /2/sharing/list_shared_links возвращает только существующие общие ссылки. Ответ, который вы получили с помощью "links": [],, указывает на то, что вызов был успешным, но по этому пути не было ссылок для возврата.
Невозможно использовать /2/sharing/list_shared_links для отображения общих ссылок для элементов внутри определенной папки. Если вы укажете конкретный путь к папке, будут возвращены ссылки только на эту папку, а не на ее содержимое. Чтобы получить общие ссылки для всего, вам нужно будет полностью опустить путь. Чтобы получить общие ссылки для определенного файла, вам нужно указать путь к этому файлу, который вы можете получить из значения path_lower для файла, возвращаемого /2/files/list_folder[/continue], например, как показано на ваш вопрос.
Обратите внимание, что это позволяет вам получать только существующие общие ссылки. Если необходимые общие ссылки еще не существуют, вам нужно создать их, используя /2/sharing/create_shared_link_with_settings, как описано в моем ответе выше.
Разве вам не нужно сначала поделиться этим? dropbox.com/developers/documentation/http/…