Как создать файл с помощью google-cloud-storage? - PullRequest
0 голосов
/ 25 февраля 2020

В моем проекте Rails я использую gem 'google-cloud-storage' и gem 'aws-sdk-s3'.

Для создания файла с использованием AWS я использую следующий код:

connection = Fog::Storage.new({
               provider: 'AWS',
      aws_access_key_id: ENV['AWS_ACCESS_KEY'],
  aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'] })

directory = connection.directories.get(ENV['AWS_BUCKET'])

file = directory.files.create(
                    key: some_filename,
           content_type: some_type,
                   body: some_body,
                 public: true )

Есть ли способ также создать файл с помощью gcloud?

1 Ответ

1 голос
/ 25 февраля 2020

Понял проблему.

Чтобы создать файл, вам нужно использовать create_file метод

def create_file file, path = nil, acl: nil, cache_control: nil,
                content_disposition: nil, content_encoding: nil,
                content_language: nil, content_type: nil,
                crc32c: nil, md5: nil, metadata: nil,
                encryption_key: nil, encryption_key_sha256: nil
  ensure_service!
  options = { acl: File::Acl.predefined_rule_for(acl), md5: md5,
              cache_control: cache_control, content_type: content_type,
              content_disposition: content_disposition, crc32c: crc32c,
              content_encoding: content_encoding,
              content_language: content_language, metadata: metadata,
              key: encryption_key, key_sha256: encryption_key_sha256 }
  ensure_file_exists! file

  path ||= Pathname(file).to_path
  gapi = service.insert_file name, file, path, options
  File.from_gapi gapi, service
end

В моем случае я загружаю звук, создавая временный файл, а затем помещаю этот временный файл. в методе.

storage = Google::Cloud::Storage.new(project: ENV['GOOGLE_ID'], 
                                     keyfile: ENV['GOOGLE_JSON'] )

bucket = storage.bucket( ENV['GOOGLE_BUCKET'] )

bucket.create_file(sound.tempfile, some_filename)
...