Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ошибка копирования файлов с одинаковыми именами внутри облака (нельзя переименовать) #219

Open
pozitronik opened this issue Jun 30, 2019 · 0 comments
Assignees

Comments

@pozitronik
Copy link
Owner

Функция cpFile -> copyFile
Используем API-вызов API_FILE_COPY, он копирует файл по новому пути без переименования. Если по новому пути уже есть файл с тем же именем, API срабатывает в зависимости от параметра conflict: выдаёт ошибку либо молча переименовывает копируемый файл. Во втором случае новое имя можно получить из JSON ответа.
Проблема в том, что это не даёт управлять переименованием из самого TC. В API-вызов нельзя передать новое имя файла, только путь. Сейчас копирование с переименованием сделано в два вызова (скопировать + переименовать), но для вышеописанной ситуации это не сработает.
Атомарного решения, кажется, не существует.
Вариант пошагового решения:

  1. Передавать в cpFile флаг overwrite.
  2. Если overwrite = false, перед копированием проверять существование файла с заданным именем, запросить пользователя.
  3. Если overwrite=true, то вызывать API_FILE_COPY с параметром conflict=CLOUD_CONFLICT_RENAME, получаем из ответа новое имя файла (оно гарантированно будет уникальным). Удаляем имеющийся файл, и переименуем скопированный файл в нужное имя.

Тот же алгоритм применить для mvFile.

@pozitronik pozitronik self-assigned this Jun 30, 2019
pozitronik added a commit that referenced this issue Jun 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant