#elixir #phoenix-framework
#elixir #phoenix-framework
Вопрос:
Это работает, но в корне создается только файл, а не папка
{:ok, object} = GoogleApi.Storage.V1.Api.Objects.storage_objects_insert_simple(
conn,
bucket_id,
"multipart",
%{name: Path.basename(file_path)},
file_path
)
Ответ №1:
name
Параметром должна быть полная папка плюс имя файла для сохранения в вашей корзине; вы отправляете только basename(file_path)
, который является именем файла, который был загружен.
Несколько советов:
- Я говорю «папка», хотя хранилище Goolge показывает сохраненные объекты, как если бы они были в папках, на самом деле это просто хранилище объектов типа ключ-значение
- в вашем коде должен быть указан полный путь к файлу — не позволяйте пользователю вводить его
- обратите внимание на то, как API ожидает кодирования параметров, которые обычно обрабатываются для вас этой библиотекой
- к сожалению, ошибка была введена в версии 0.23 (и существует, по крайней мере, до версии 0.26), когда они неправильно кодируют конечный параметр path
- вы захотите отправить правильные
mime_type
метаданные объекта при загрузке, или загрузка из браузера приведет к отправке только в двоичном формате