Я работаю над функциональностью, подобной «google drive» в моем приложении, и застрял на функции «переименовать файл»: потому что хранилище firebase работает в облаке google, а облако google не имеет функции «переименовать» эта задача оказалась не такой уж очевидной. (у них есть команда «переместить», которая слишком сложна для переименования, поскольку она сначала копирует, а затем удаляет файл)
Однако я храню объект «дескриптор» в хранилище для каждого файла. Среди других данных в этом дескрипторе хранится имя файла, которое я использую для отображения пользователям.
Единственная причина, по которой я искал возможность переименовать файл в самом хранилище, заключается в том, что у моих пользователей есть возможность загрузить каждый файл - в этом случае имя файла берется из самого хранилища, и я не могу найти способ его изменить.
Для этого я генерирую ссылку, как показано ниже, которую пользователь нажимает, чтобы загрузить файл:
<a href="https://...myurl.com/..path_to_file/Hook.docx?..token-here..." download="Hook111.docx" target="_blank"></a>
Оказалось, что параметр download
- это игнорируется браузерами, если сервер возвращает имя в заголовке
Итак, я надеялся обновить имя в хранилище с помощью метаданных файла:
bucket.file(".../Hook.docx").setMetadata({name:"Hook11122.docx"})
, но я получаю эту ошибку
Ошибка: значение «Hook11122.docx» в содержимом не соответствует значению «users / Corp9wBL7BSHMgQf4mMnOyS31mD3 / drive /BkkS0TbJMCxPUR9uHb2A_Hook.docx '. Это может произойти, когда значение, установленное с помощью параметра, несовместимо со значением, установленным в запросе.
Вероятно, есть другие решения этой проблемы, но есть ли способ сообщить хранилищу firebase, чтобы другое / нестандартное имя при скачивании файла по ссылке?