【问题标题】:Download file from google cloud storage using ruby client gets HTTP redirect使用 ruby​​ 客户端从谷歌云存储下载文件获取 HTTP 重定向
【发布时间】:2013-08-12 21:41:54
【问题描述】:

我正在尝试使用 Ruby 客户端和服务帐户授权从 GCS 下载文件;这是我的代码:

def build_client
  client = Google::APIClient.new()
  key = Google::APIClient::PKCS12.load_key(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'notasecret')
  service_account = Google::APIClient::JWTAsserter.new(
      SERVICE_ACCOUNT_EMAIL,
      'https://www.googleapis.com/auth/devstorage.full_control',
  key)
  client.authorization = service_account.authorize
  client
end

client = build_client
storage = client.discovered_api('storage', 'v1beta2')

#Get (download) a specific object from a bucket
bucket_get_result = client.execute(
    api_method: storage.objects.get,
    parameters: {bucket: BUCKET, object: params[:file_name], alt: 'media'}
)
puts bucket_get_result.body

结果正文是一个重定向详细信息,如下所示:

<HTML>
<HEAD>
<TITLE>Temporary Redirect</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Temporary Redirect</H1>
The document has moved <A     HREF="https://storage.googleapis.com/my_bucket_name/my_file_name">here</A>.
</BODY>
</HTML>

...然后,如果我尝试转到重定向“位置”,我会收到未经授权的 HTTP。那么,如何使用 ruby​​ 客户端从 GCS 下载文件? https://developers.google.com/storage/docs/json_api/v1/objects/get 说:

如果您提供 URL 参数 alt=media,那么它将在响应正文中以对象数据进行响应

【问题讨论】:

    标签: google-cloud-storage


    【解决方案1】:

    Google Ruby API 客户端目前不支持下载媒体。

    但是,您始终可以自己完成其余的工作。

    require 'httparty'
    
    get_result = bucket_get_result = client.execute(
        api_method: storage.objects.get,
        parameters: {bucket: BUCKET, object: params[:file_name], :alt=>'media'})
    url = get_result.response.env[:response_headers]['location']
    token = "Bearer #{bucket_get_result.request.authorization.access_token}"
    puts HTTParty.get(url, :headers => {"Authorization" => token}).body
    

    【讨论】:

      猜你喜欢
      • 2020-07-20
      • 2016-03-21
      • 2018-05-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多