как загрузить данные в хранилище Google без локального сохранения - PullRequest
0 голосов
/ 29 октября 2019

Этот код хорошо работает для меня:

GCloudex.CloudStorage.Client.put_object_content("my-bucket", "my_file_name", "heloo")

Я сейчас пытаюсь использовать библиотеку Swagger google_api_storage , и это то, что я тоже пытался:

  @spec upload_file(bucket_id, file_path, name) :: {:ok, media_link} | {:error, error_message}
  def upload_file(bucket_id, file_path, name) do
    # Make the API request.
    res = GoogleApi.Storage.V1.Api.Objects.storage_objects_insert_simple(
                    Connection.get(), bucket_id, "multipart",
                    %{name: Path.basename(name)}, file_path)
    case res do
      {:ok, %GoogleApi.Storage.V1.Model.Object{mediaLink: media_link}} -> {:ok, media_link}
      {:error, %Tesla.Env{body: body}} -> {:error, body}
      _ -> {:error, "unkonw error"}
    end

  end

Я хочу загрузить без сохранения локально, какую функцию я бы использовал и как?
storage_objects_insert - Я не вижу, куда я могу вставить тело запроса в запрос?


В целом, есть ли ссылка в API на загрузку данных в хранилище в Документах Google ?

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Используя Google Cloud Storage API, вы можете напрямую предоставить данные файла в теле запроса POST. Справочную информацию по API вставки объекта Cloud Storage здесь :

0 голосов
/ 31 октября 2019

см. здесь для запроса скручивания

curl -k -v -X POST \
-H "Authorization: Bearer <your_oauth2_token>" -H "Content-Length: 8" \
-H "Content-Type: text/plain" \
'https://www.googleapis.com/upload/storage/v1/b/your-bucket/o?uploadType=media&name=yourobjectname' \
-d 'yourdata'

с использованием библиотеки, используйте последнюю версию {:google_api_storage, "~> 0.13.0"}:

conn = GoogleApi.Storage.V1.Connection.new("TOKEN")

{:ok, object} =
  GoogleApi.Storage.V1.Api.Objects.storage_objects_insert(
    conn,
    "BUCKET_NAME",
    body: "Hello, World! This is the content of the file.",
    name: "file.txt"
  )

см. https://github.com/googleapis/elixir-google-api/issues/1197

...