七牛关于Ruby SDK的各种Demo

具体可以参考七牛Ruby SDK的源码以及官网使用文档:
https://github.com/qiniu/ruby-sdk
http://developer.qiniu.com/docs/v6/sdk/ruby-sdk.html

文件上传

上传代码

#!/usr/bin/env ruby

require 'qiniu'

# 构建鉴权对象
Qiniu.establish_connection! :access_key => 'Access_Key',
                            :secret_key => 'Secret_Key'

#要上传的空间
bucket = 'Bucket_Name'

#上传到七牛后保存的文件名
key = 'my-ruby-logo.png'


#构建上传策略
put_policy = Qiniu::Auth::PutPolicy.new(
    bucket,      # 存储空间
    key,     # 最终资源名,可省略,即缺省为“创建”语义,设置为nil为普通上传 
    3600    #token过期时间,默认为3600s
)

#生成上传 Token
uptoken = Qiniu::Auth.generate_uptoken(put_policy)

#要上传文件的本地路径
filePath = './ruby-logo.png'

#调用upload_with_token_2方法上传
code, result, response_headers = Qiniu::Storage.upload_with_token_2(
     uptoken, 
     filePath,
     key
)

#打印上传返回的信息
puts code
puts result

上传&回调

#!/usr/bin/env ruby

require 'qiniu'

# 构建鉴权对象
Qiniu.establish_connection! :access_key => 'Access_Key',
                            :secret_key => 'Secret_Key'

bucket = 'Bucket_Name'

key = 'my-ruby-logo.png'

put_policy = Qiniu::Auth::PutPolicy.new(
    bucket,      # 存储空间
    key,     # 最终资源名,可省略,即缺省为“创建”语义,设置为nil为普通上传 
    3600    #token过期时间,默认为3600s
)

#构建回调策略,这里上传文件到七牛后, 七牛将文件名和文件大小回调给业务服务器.
callback_url = 'http://your.domain.com/callback'
callback_body = 'filename=$(fname)&filesize=$(fsize)'

put_policy.callback_url= callback_url
put_policy.callback_body= callback_body

#生成上传 Token
uptoken = Qiniu::Auth.generate_uptoken(put_policy)

#要上传文件的本地路径
filePath = './ruby-logo.png'

#调用upload_with_token_2方法上传
code, result, response_headers = Qiniu::Storage.upload_with_token_2(
     uptoken, 
     filePath,
     key
)

#打印上传返回的信息
puts code
puts result

上传&预转持续化(以视频转码为例)

#!/usr/bin/env ruby

require 'qiniu'

# 构建鉴权对象
Qiniu.establish_connection! :access_key => 'Access_Key',
                            :secret_key => 'Secret_Key'

bucket = 'Bucket_Name'

key = 'my-ruby-logo.png'

put_policy = Qiniu::Auth::PutPolicy.new(
    bucket,      # 存储空间
    key,     # 最终资源名,可省略,即缺省为“创建”语义,设置为nil为普通上传 
    3600    #token过期时间,默认为3600s
)

#转码是使用的队列名称。 
pipeline = 'abc' #设定自己账号下的pipleline

#要进行转码的转码操作。 
fops = "avthumb/mp4/s/640x360/vb/1.25m"

#可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当间。
saveas_key = Qiniu::Utils.urlsafe_base64_encode(目标Bucket_Name:自定义文件key)
fops = fops+'|saveas/'+saveas_key

put_policy.persistent_ops= fops
put_policy.persistent_pipeline= pipeline

#生成上传 Token
uptoken = Qiniu::Auth.generate_uptoken(put_policy)

#要上传文件的本地路径
filePath = './ruby-logo.png'

#调用upload_with_token_2方法上传
code, result, response_headers = Qiniu::Storage.upload_with_token_2(
     uptoken, 
     filePath,
     key
)

#打印上传返回的信息
puts code
puts result



注:上面的Demo只是针对视频转码,如果需要别的功能比如音视频切片、视频截图、视频拼接只需要修改下上面的fops后面的参数就可以了,
eg: fops = 'vframe/jpg/offset/1/w/480/h/360/rotate/90'就表示视频截图了。

下面给出一些常见的数据处理功能,可以根据需要进行选择:
# ------------------图片缩放-------------------
fops ='imageView/2/w/200/h/200'

# ------------------视频转码-------------------
fops ='avthumb/mp4/s/500x600/vcodec/libx265'

# ------------------图片水印-------------------
base64URL = Qiniu::Utils.urlsafe_base64_encode('http://developer.qiniu.com/resource/logo-2.jpg')
fops = 'watermark/1/image/'+base64URL

# ------------------视频切片-------------------
fops = 'avthumb/m3u8/segtime/10/s/500x600'

# ------------------文档转换-------------------
fops = 'yifangyun_preview'

# ------------------视频截图-------------------
fops = 'vframe/jpg/offset/1/w/480/h/360/rotate/90'

# ------------------视频拼接-------------------
# 拼接视频片段时要保证所有源的画面长宽值一致
# 除去作为数据处理对象的源文件以外,还可以指定最多5个源文件(即总计6个片段)
# 所有源文件必须属于同一存储空间
# 格式:avconcat/<Mode>/format/<Format>/<encodedUrl0>/<encodedUrl1>/<encodedUrl2>/...
encodedUrl1 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/pingjie2.flv')
encodedUrl2 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/pingjie3.avi')
fops = 'avconcat/2/format/mp4/'+encodedUrl1+'/'+encodedUrl2

# ------------------多文件压缩-------------------
# 可将若干七牛空间中的资源文件,在七牛服务端压缩后存储
# 格式:mkzip/<mode>/url/<Base64EncodedURL>/alias/<Base64EncodedAlias>/url/<Base64EncodedURL>
encodedfile1 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/photo1.jpg')
encodedfile2 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/vedio1.mp4')
encodedfile3 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/audio1.mp3')
fops = 'mkzip/2/url/'+encodedfile1+'/url/'+encodedfile2+'/url/'+encodedfile3

# -----------------图片转格式------------------
fops = 'imageView2/2/format/jpg'

可以看到上传成功后的回调行为主要是有上传 Token 中的 policy 来指定。其中policy可以指定的行为不止这些,具体可以参考签权类中的policy字段

 PARAMS = {
          # 字符串类型参数
          :scope                  => "scope"               ,
          :save_key               => "saveKey"             ,
          :end_user               => "endUser"             ,
          :return_url             => "returnUrl"           ,
          :return_body            => "returnBody"          ,
          :callback_url           => "callbackUrl"         ,
          :callback_host          => "callbackHost"        ,
          :callback_body          => "callbackBody"        ,
          :callback_body_type     => "callbackBodyType"    ,
          :persistent_ops         => "persistentOps"       ,
          :persistent_notify_url  => "persistentNotifyUrl" ,
          :persistent_pipeline    => "persistentPipeline"  ,

          # 数值类型参数
          :deadline               => "deadline"            ,
          :insert_only            => "insertOnly"          ,
          :fsize_limit            => "fsizeLimit"          ,
          :callback_fetch_key     => "callbackFetchKey"    ,
          :detect_mime            => "detectMime"          ,
          :mime_limit             => "mimeLimit"
        } # PARAMS

文件下载

生成下载链接

#!/usr/bin/env ruby

require 'qiniu'

Qiniu.establish_connection! :access_key => 'AK',
                            :secret_key => 'SK'

#构建私有空间的链接
primitive_url = 'http://domain/key'
download_url = Qiniu::Auth.authorize_download_url(primitive_url)
puts download_url

空间资源的管理

获取文件的信息

#!/usr/bin/env ruby

require 'qiniu'

Qiniu.establish_connection! :access_key => 'Access_Key',
                            :secret_key => 'Secret_Key'

#你要测试的空间, 并且这个key在你空间中存在
bucket = 'Bucket_Name';
key = 'ruby-logo.png';

#获取文件信息
code, result, response_headers = Qiniu::Storage.stat(
    bucket,     # 存储空间
    key         # 资源名
)
puts code
puts result
puts response_headers

移动单个文件

#!/usr/bin/env ruby

require 'qiniu'

Qiniu.establish_connection! :access_key => 'Access_Key',
                            :secret_key => 'Secret_Key'

#你要测试的空间, 并且这个key在你空间中存在
bucket = 'Bucket_Name';
key = 'ruby-logo.png';

#移动到的目标空间名和重命名的key
dst_bucket = 'dst_bucket'
dst_key = 'dst_key'


#移动文件
code, result, response_headers = Qiniu::Storage.move(
    bucket,     # 源存储空间
    key,        # 源资源名
    dst_bucket,     # 目标存储空间
    dst_key         # 目标资源名
)
puts code
puts result
puts response_headers

复制单个文件

#!/usr/bin/env ruby

require 'qiniu'

Qiniu.establish_connection! :access_key => 'Access_Key',
                            :secret_key => 'Secret_Key'

#你要测试的空间, 并且这个key在你空间中存在
bucket = 'Bucket_Name'
key = 'ruby-logo.png'

#复制到的目标空间名和重命名的key
dst_bucket = 'dst_bucket'
dst_key = 'dst_key'

#复制文件
code, result, response_headers = Qiniu::Storage.copy(
    bucket,     # 源存储空间
    key,        # 源资源名
    dst_bucket,     # 目标存储空间
    dst_key         # 目标资源名
)
puts code
puts result
puts response_headers

删除单个文件

#!/usr/bin/env ruby

require 'qiniu'

Qiniu.establish_connection! :access_key => 'Access_Key',
                            :secret_key => 'Secret_Key'

#你要测试的空间, 并且这个key在你空间中存在
bucket = 'Bucket_Name'
key = 'ruby-logo.png'

#删除资源
code, result, response_headers = Qiniu::Storage.delete(
    bucket,     # 存储空间
    key         # 资源名
)

puts code
puts result
puts response_headers

触发持久化操作(以视频转码为例)

视频转码

#!/usr/bin/env ruby

require 'qiniu'
require 'qiniu/utils'

# 构建鉴权对象
Qiniu.establish_connection! :access_key => 'AK',
                            :secret_key => 'SK'

#要转码的文件所在的空间和文件名。
bucket = 'Bucket_Name'
key = '1.mp4'

#转码所使用的队列名称。 
pipeline = 'abc'

#要进行转码的转码操作。 
fops = "avthumb/mp4/s/640x360/vb/1.25m"


#可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当间。
saveas_key = Qiniu::Utils.urlsafe_base64_encode(目标Bucket_Name:自定义文件key)
fops = fops+'|saveas/'+saveas_key

pfops  = Qiniu::Fop::Persistance::PfopPolicy.new(
    bucket,      # 存储空间
    key,   # 最终资源名,可省略,即缺省为“创建”语义
    fops,
    'www.baidu.com'
)
pfops.pipeline=pipeline

code, result, response_headers = Qiniu::Fop::Persistance.pfop(pfops)
puts code
puts result
puts response_headers


注:同样,上面的Demo只是针对视频转码,如果需要别的功能比如音视频切片、视频截图、视频拼接只需要修改下上面的fops后面的参数就可以了,
eg: fops = "vframe/jpg/offset/1/w/480/h/360/rotate/90"就表示视频截图了。
下面给出一些常见的数据处理功能,可以根据需要进行选择:
# ------------------图片缩放-------------------
fops ='imageView/2/w/200/h/200'

# ------------------视频转码-------------------
fops ='avthumb/mp4/s/500x600/vcodec/libx265'

# ------------------图片水印-------------------
base64URL = Qiniu::Utils.urlsafe_base64_encode('http://developer.qiniu.com/resource/logo-2.jpg')
fops = 'watermark/1/image/'+base64URL

# ------------------视频切片-------------------
fops = 'avthumb/m3u8/segtime/10/s/500x600'

# ------------------文档转换-------------------
fops = 'yifangyun_preview'

# ------------------视频截图-------------------
fops = 'vframe/jpg/offset/1/w/480/h/360/rotate/90'

# ------------------视频拼接-------------------
# 拼接视频片段时要保证所有源的画面长宽值一致
# 除去作为数据处理对象的源文件以外,还可以指定最多5个源文件(即总计6个片段)
# 所有源文件必须属于同一存储空间
# 格式:avconcat/<Mode>/format/<Format>/<encodedUrl0>/<encodedUrl1>/<encodedUrl2>/...
encodedUrl1 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/pingjie2.flv')
encodedUrl2 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/pingjie3.avi')
fops = 'avconcat/2/format/mp4/'+encodedUrl1+'/'+encodedUrl2

# ------------------多文件压缩-------------------
# 可将若干七牛空间中的资源文件,在七牛服务端压缩后存储
# 格式:mkzip/<mode>/url/<Base64EncodedURL>/alias/<Base64EncodedAlias>/url/<Base64EncodedURL>
encodedfile1 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/photo1.jpg')
encodedfile2 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/vedio1.mp4')
encodedfile3 = Qiniu::Utils.urlsafe_base64_encode('http://7xl4c9.com1.z0.glb.clouddn.com/audio1.mp3')
fops = 'mkzip/2/url/'+encodedfile1+'/url/'+encodedfile2+'/url/'+encodedfile3

# -----------------图片转格式------------------
fops = 'imageView2/2/format/jpg'

你可能感兴趣的:(七牛)