七牛---关于Ruby SDK的各种Demo

来源:互联网 发布:php邮箱验证点击激活 编辑:程序博客网 时间:2024/06/02 02:43

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

文件上传

上传代码

#!/usr/bin/env rubyrequire '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)#生成上传 Tokenuptoken = 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 codeputs result

上传&回调

#!/usr/bin/env rubyrequire '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_urlput_policy.callback_body= callback_body#生成上传 Tokenuptoken = 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 codeputs result

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

#!/usr/bin/env rubyrequire '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_keyput_policy.persistent_ops= fopsput_policy.persistent_pipeline= pipeline#生成上传 Tokenuptoken = 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 codeputs 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 rubyrequire '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 rubyrequire '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 codeputs resultputs response_headers

移动单个文件

#!/usr/bin/env rubyrequire 'qiniu'Qiniu.establish_connection! :access_key => 'Access_Key',                            :secret_key => 'Secret_Key'#你要测试的空间, 并且这个key在你空间中存在bucket = 'Bucket_Name';key = 'ruby-logo.png';#移动到的目标空间名和重命名的keydst_bucket = 'dst_bucket'dst_key = 'dst_key'#移动文件code, result, response_headers = Qiniu::Storage.move(    bucket,     # 源存储空间    key,        # 源资源名    dst_bucket,     # 目标存储空间    dst_key         # 目标资源名)puts codeputs resultputs response_headers

复制单个文件

#!/usr/bin/env rubyrequire 'qiniu'Qiniu.establish_connection! :access_key => 'Access_Key',                            :secret_key => 'Secret_Key'#你要测试的空间, 并且这个key在你空间中存在bucket = 'Bucket_Name'key = 'ruby-logo.png'#复制到的目标空间名和重命名的keydst_bucket = 'dst_bucket'dst_key = 'dst_key'#复制文件code, result, response_headers = Qiniu::Storage.copy(    bucket,     # 源存储空间    key,        # 源资源名    dst_bucket,     # 目标存储空间    dst_key         # 目标资源名)puts codeputs resultputs response_headers

删除单个文件

#!/usr/bin/env rubyrequire '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 codeputs resultputs response_headers

Fetch抓取url

#!/usr/bin/env rubyrequire 'qiniu'Qiniu.establish_connection! :access_key => 'xxx',                            :secret_key => 'xxx'#需要fetch操作保存到的空间名bucket = 'xxx'#fetch过来的url,需要外网可以访问到target_url = 'url'#保存到空间的fetch操作的文件名key = 'xxx'#调用fetch方法code, result, response_headers = Qiniu::Storage.fetch(    bucket,          target_url,      key          )#打印返回的状态码以及信息puts codeputs resultputs response_headers

List列举

#!/usr/bin/env rubyrequire 'qiniu'Qiniu.establish_connection! :access_key => 'xxxx',                            :secret_key => 'xxxx'#你要测试的list的空间名bucket = 'xxxx'#调用list接口,参数可以参考 http://developer.qiniu.com/code/v6/api/kodo-api/rs/list.html#list-specification code, result, response_headers, s, d = Qiniu::Storage.list(Qiniu::Storage::ListPolicy.new(    bucket,   # bucket    100,      # limit    'photo/', # prefix    ''        # delimiter))#打印出返回的状态码和信息puts codeputs resultputs response_headers

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

视频转码

#!/usr/bin/env rubyrequire '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_keypfops  = Qiniu::Fop::Persistance::PfopPolicy.new(    bucket,      # 存储空间    key,   # 最终资源名,可省略,即缺省为“创建”语义    fops,    'www.baidu.com')pfops.pipeline=pipelinecode, result, response_headers = Qiniu::Fop::Persistance.pfop(pfops)puts codeputs resultputs 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'
2 0
原创粉丝点击