在不用SDK的情况下,您也可以直接使用HTTP下载存放在OSS中的文件。HTTP下载包括直接使用浏览器下载或者使用wgetcurl等命令行工具下载,此时文件的URL需要由SDK生成。

使用Bucket#object_url方法生成可下载的HTTP地址,包含以下参数:
  • key:要下载的文件名称。
  • sign:是否生成带签名的URL。
    说明
    • 对于访问权限为公共读(public-read)或者公共读写(public-read-write)的文件,允许您通过不带签名的URL进行访问。
    • 对于访问权限为私有(private)的文件,您必须通过带签名的URL进行访问。
  • expires:URL的有效时间,默认值为60s。

示例代码

以下代码用于HTTP下载。

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
  access_key_id: 'AccessKeyId', access_key_secret: 'AccessKeySecret')

# 填写Bucket名称,例如examplebucket。
bucket = client.get_bucket('examplebucket')
# 生成URL,默认带签名,有效时间为60秒。
puts bucket.object_url('my-object')
# https://examplebucket.oss-cn-hangzhou.aliyuncs.com/my-object?Expires=1448349966&OSSAccessKeyId=5vxxxx&Signature=aM2HpBLeMq1aec6JCd7BBAKYiwI%3D

# 不带签名的URL。
puts bucket.object_url('my-object', false)
# https://examplebucket.oss-cn-hangzhou.aliyuncs.com/my-object

# 指定URL有效时间为1小时(3600秒)。
puts bucket.object_url('my-object', true, 3600)