七牛---关于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
- 七牛---关于Ruby SDK的各种Demo
- 七牛---关于JAVA SDK的各种Demo
- 七牛---关于C# SDK的各种Demo
- 七牛---关于PHP SDK的各种Demo
- 七牛---关于Python SDK的各种Demo
- 七牛---关于Node.js SDK的各种Demo
- 七牛---关于GO SDK的各种Demo
- 七牛---关于PHP SDK的各种Demo
- 【转自戴Sir】七牛关于Python SDK的各种Demo
- 七牛---各种SDK Demo汇总
- 七牛---关于JavaScript SDK各种问题总结
- 七牛---关于JavaScript SDK各种问题总结
- 七牛---Android SDK断点续传与暂停上传Demo
- 七牛---Android SDK断点续传与暂停上传Demo
- 七牛---关于Android SDK jar包依赖情况总结
- 七牛关于Android SDK jar包依赖情况总结
- 各种排序的Ruby实现
- Ruby数组的各种使用
- HDOJ 1269 迷宫城堡 tarjan算法
- 关于XMLHttpRequest.open()设置提交方式 (POST,GET)
- 北大OJ3624
- 买啤酒最优解问题
- MY FIRST BLOG
- 七牛---关于Ruby SDK的各种Demo
- Sublime Text 2 技巧:导航/命令面板/多重选择
- Android自学的感受
- 5个Android开发中比较常见的内存泄漏问题及解决办法
- #总结 2015.12.08总结——运动随笔
- 动态注册广播接收器
- 北大OJ2536
- 类的扩展
- 北大OJ1469