Я использую экземпляр nextcloud и пытаюсь загрузить каталог с помощью вызова API, используя запросы библиотеки.
Я могу загрузить zip-файл с помощью вызова API. Теперь я хотел бы иметь каталог unzipped в моем экземпляре nextcloud и загрузить его через вызов API. Для меня не имеет значения, получу ли я обратно zip-файл при вызове API , я просто хочу разархивировать его в облаке.
Например, я могу поместить туда разархивированный каталог, и когда я загружаю его в браузер, nextcloud возвращает мне zip-файл. Такое поведение я хочу в вызове API.
Теперь, если я положу туда zip-файл , я могу скачать файл так:
import os
import requests
response = requests.request(
method="get",
url=f"https://mycloud/remote.php/dav/files/setup_user/{name_dir}/",
auth=("my_user", my_token),
)
if response.status_code == 200:
with open("/path/to/my/dir/file_name.zip"), "wb") as file:
file.write(response.content)
, который пишет мне мой zip-файл, который находится в облаке, в локальный файл имя_файла.zip. Моя проблема в том, что если у меня есть разархивированный каталог в облаке, он не будет работать. Не работает, что означает, что я получаю обратно файл с содержанием:
Это интерфейс WebDAV. Доступ к нему могут получить только клиенты WebDAV, такие как клиент рабочего стола syncl 1036 * Nextcloud.
Я также попытался сделать это с помощью wget wget --recursive --no-parent https://path/to/my/dir
, и я получил тот же файл с тем же содержимым обратно ,
Итак, я предполагаю, что WebDav API nextcloud не позволяет мне делать это так, как я хочу. Не мне интересно, что я делаю неправильно или если то, что я хочу, выполнимо. Также я не понимаю, почему в браузере это работает нормально. Я просто выбираю распакованную папку и могу скачать ее одним кликом. В сообществе nextcoud было предложено использовать Rclone
(https://help.nextcloud.com/t/download-complete-directory-from-nextcloud-instance/77828), но я бы предпочел не использовать зависимость, которую я должен установить на каждой машине, где я хочу запустить этот код ,
Любая помощь очень ценится! Большое спасибо заранее!
PS: На случай, если кому-то интересно, почему я хотел бы сделать это: это гораздо удобнее, когда я хочу изменить только один файл в моем каталоге в облаке. В противном случае я должен распаковать, изменить файл, заархивировать и загрузить снова.