как создать папку в хранилище Google? Elixir

#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 метаданные объекта при загрузке, или загрузка из браузера приведет к отправке только в двоичном формате