七牛---关于Node.js SDK的各种Demo
来源:互联网 发布:开淘宝企业店铺多少钱 编辑:程序博客网 时间:2024/06/05 17:46
具体可以参考七牛PHP SDK的源码以及官网使用文档:
https://github.com/qiniu/nodejs-sdk.v6
http://developer.qiniu.com/docs/v6/sdk/nodejs-sdk.html
文件上传
上传代码
var qiniu = require("qiniu");//需要填写你的 Access Key 和 Secret Keyqiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//要上传的空间bucket = 'Bucket_Name';//上传到七牛后保存的文件名key = 'my-nodejs-logo.png';//构建上传策略函数function uptoken(bucket, key) { var putPolicy = new qiniu.rs.PutPolicy(bucket+":"+key); return putPolicy.token();}//生成上传 Tokentoken = uptoken(bucket, key);//要上传文件的本地路径filePath = './ruby-logo.png'//构造上传函数function uploadFile(uptoken, key, localFile) { var extra = new qiniu.io.PutExtra(); qiniu.io.putFile(uptoken, key, localFile, extra, function(err, ret) { if(!err) { // 上传成功, 处理返回值 console.log(ret.hash, ret.key, ret.persistentId); } else { // 上传失败, 处理返回代码 console.log(err); } });}//调用uploadFile上传uploadFile(token, skey, filePath);
上传&回调
var qiniu = require("qiniu");//需要填写你的 Access Key 和 Secret Keyqiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//要上传的空间bucket = 'Bucket_Name';//上传到七牛后保存的文件名key = 'my-nodejs-logo.png';//构建上传策略函数,设置回调的url以及需要回调给业务服务器的数据function uptoken(bucket, key) { var putPolicy = new qiniu.rs.PutPolicy(bucket+":"+key); putPolicy.callbackUrl = 'http://your.domain.com/callback'; putPolicy.callbackBody = 'filename=$(fname)&filesize=$(fsize)'; return putPolicy.token();}//生成上传 Tokentoken = uptoken(bucket, key);//要上传文件的本地路径filePath = './nodejs-logo.png'//构造上传函数function uploadFile(uptoken, key, localFile) { var extra = new qiniu.io.PutExtra(); qiniu.io.putFile(uptoken, key, localFile, extra, function(err, ret) { if(!err) { // 上传成功, 处理返回值 console.log(ret.hash, ret.key, ret.persistentId); } else { // 上传失败, 处理返回代码 console.log(err); } });}//调用uploadFile上传uploadFile(token, skey, filePath);
上传&预转持续化(以视频转码为例)
var qiniu = require("qiniu");//需要填写你的 Access Key 和 Secret Keyqiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//要上传的空间bucket = 'Bucket_Name';//上传到七牛后保存的文件名key = 'my-nodejs.mp4';//转码是使用的队列名称。 pipeline = 'abc' #设定自己账号下的pipleline//要进行转码的转码操作。 fops = "avthumb/mp4/s/640x360/vb/1.25m"//可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当间。saveas_key = qiniu.util.urlsafeBase64Encode(目标Bucket_Name:自定义文件key); fops = fops+'|saveas/'+saveas_key;;//上传策略中设置pipeline以及fopsfunction uptoken(bucket, key) { var putPolicy = new qiniu.rs.PutPolicy(bucket+":"+key); putPolicy.persistentOps = fops; putPolicy.persistentPipeline = pipleline; return putPolicy.token();}//生成上传 Tokentoken = uptoken(bucket, key);//要上传文件的本地路径filePath = './nodejs.mp4'//构造上传函数function uploadFile(uptoken, key, localFile) { var extra = new qiniu.io.PutExtra(); qiniu.io.putFile(uptoken, key, localFile, extra, function(err, ret) { if(!err) { // 上传成功, 处理返回值 console.log(ret.hash, ret.key, ret.persistentId); } else { // 上传失败, 处理返回代码 console.log(err); } });}//调用uploadFile上传uploadFile(token, skey, filePath);注:上面的Demo只是针对视频转码,如果需要别的功能比如音视频切片、视频截图、视频拼接只需要修改下上面的fops后面的参数就可以了,eg: fops = 'vframe/jpg/offset/1/w/480/h/360/rotate/90'就表示视频截图了。下面给出一些常见的数据处理功能,可以根据需要进行选择:// ------------------图片缩放-------------------fops ='imageView/2/w/200/h/200';// ------------------视频转码-------------------fops ='avthumb/avi/s/500x600';// ------------------图片水印-------------------base64URL = qiniu.util.urlsafeBase64Encode('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.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/pingjie2.flv');encodedUrl2 = qiniu.util.urlsafeBase64Encode('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.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/photo1.jpg');encodedfile2 = qiniu.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/vedio1.mp4');encodedfile3 = qiniu.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/audio1.mp3');fops = 'mkzip/2/url/'+encodedfile1+'/url/'+encodedfile2+'/url/'+encodedfile3;
可以看到上传成功后的回调行为主要是有上传 Token
中的 policy
来指定。其中policy可以指定的行为不止这些,具体可以参考签权类中的policy字段。
文件下载
生成下载链接
var qiniu = require("qiniu");qiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//构建私有空间的链接url = 'http://domain/key';var policy = new qiniu.rs.GetPolicy();//生成下载链接urlvar downloadUrl = policy.makeRequest(url);//打印下载的urlconsole.log(downloadUrl);
空间资源的管理
获取文件的信息
var qiniu = require("qiniu");qiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//构建bucketmanager对象var client = new qiniu.rs.Client();//你要测试的空间, 并且这个key在你空间中存在bucket = 'Bucket_Name';key = 'nodejs-logo.png';//获取文件信息client.stat(bucket, key, function(err, ret) { if (!err) { console.log(ret.hash, ret.fsize, ret.putTime, ret.mimeType); } else { console.log(err); }});
移动单个文件
var qiniu = require("qiniu");qiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//构建bucketmanager对象var client = new qiniu.rs.Client();//你要测试的空间, 并且这个key在你空间中存在bucket = 'Bucket_Name';key = 'nodejs-logo.png';//移动到的目标空间名和重命名的keydstbucket = 'dst_bucket'dstkey = 'dst_key'//移动资源client.move(bucket, key, dstbucket, deskey, function(err, ret) { if (!err) { // ok } else { console.log(err); }});
复制单个文件
var qiniu = require("qiniu");qiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//构建bucketmanager对象var client = new qiniu.rs.Client();//你要测试的空间, 并且这个key在你空间中存在bucket = 'Bucket_Name';key = 'nodejs-logo.png';//复制到的目标空间名和重命名的keydstbucket = 'dst_bucket'dstkey = 'dst_key'//复制资源client.copy(bucket, key, dstbucket, deskey, function(err, ret) { if (!err) { // ok } else { console.log(err); }});
删除单个文件
var qiniu = require("qiniu");qiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//构建bucketmanager对象var client = new qiniu.rs.Client();//你要测试的空间, 并且这个key在你空间中存在bucket = 'Bucket_Name';key = 'nodejs-logo.png';//删除资源client.remove(bucket, key, function(err, ret) { if (!err) { // ok } else { console.log(err); }});
触发持久化操作(以视频转码为例)
视频转码
var qiniu = require("qiniu");//qiniu.conf.ACCESS_KEY = 'Access_Key';qiniu.conf.SECRET_KEY = 'Secret_Key';//要转码的文件所在的空间和文件名bucket = 'Bucket_Name';key = '1.mp4';//转码所使用的队列名称。 pipeline = 'abc';//要进行转码的转码操作。 fops = "avthumb/mp4/s/640x360/vb/1.25m"//可以对转码后的文件进行使用saveas参数自定义命名,当然也可以不指定文件会默认命名并保存在当前空间saveas_key = qiniu.util.urlsafeBase64Encode(saved_bucket+':'+saved_key);fops = fops+'|saveas/'+saveas_key;opts = { pipeline: pipleline};var PFOP = qiniu.fop.pfop(bucket, key, fops, opts, function(err, ret) { if(!err) { // 上传成功, 处理返回值 console.log('curl '+'http://api.qiniu.com/status/get/prefop?id='+ret.persistentId); } else { // 上传失败, 处理返回代码 console.log(err); } });注:同样,上面的Demo只是针对视频转码,如果需要别的功能比如音视频切片、视频截图、视频拼接只需要修改下上面的fops后面的参数就可以了,eg: fops = "vframe/jpg/offset/1/w/480/h/360/rotate/90"就表示视频截图了。下面给出一些常见的数据处理功能,可以根据需要进行选择:// ------------------图片缩放-------------------fops ='imageView/2/w/200/h/200';// ------------------视频转码-------------------fops ='avthumb/avi/s/500x600';// ------------------图片水印-------------------base64URL = qiniu.util.urlsafeBase64Encode('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.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/pingjie2.flv');encodedUrl2 = qiniu.util.urlsafeBase64Encode('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.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/photo1.jpg');encodedfile2 = qiniu.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/vedio1.mp4');encodedfile3 = qiniu.util.urlsafeBase64Encode('http://7xl4c9.com1.z0.glb.clouddn.com/audio1.mp3');fops = 'mkzip/2/url/'+encodedfile1+'/url/'+encodedfile2+'/url/'+encodedfile3;
1 0
- 七牛---关于Node.js SDK的各种Demo
- 七牛---关于JAVA SDK的各种Demo
- 七牛---关于C# SDK的各种Demo
- 七牛---关于PHP SDK的各种Demo
- 七牛---关于Python SDK的各种Demo
- 七牛---关于Ruby SDK的各种Demo
- 七牛---关于GO SDK的各种Demo
- 七牛---关于PHP SDK的各种Demo
- 【转自戴Sir】七牛关于Python SDK的各种Demo
- 七牛---各种SDK Demo汇总
- 七牛---关于JavaScript SDK各种问题总结
- 七牛---关于JavaScript SDK各种问题总结
- node.js 自带的各种模块
- 关于node.js的误会
- 关于node.js的误会
- 关于 fabric-node-sdk
- 七牛---Android SDK断点续传与暂停上传Demo
- 七牛---Android SDK断点续传与暂停上传Demo
- 北大OJ2262
- vim使用
- Gradle学习笔记(二)
- Java-----使用JNI调用本地方法
- JSP语法的练习
- 七牛---关于Node.js SDK的各种Demo
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- mongdb及它的mapreduce的坑
- 设备驱动的艺术之旅 - 驱动和内核的关系
- 关于图像加密域检索的几种方法
- 0C-013.OC中的description方法
- Linux与windows之间-文件传输工具RZSZ
- codeforces 417A Elimination
- 杭电oj 1013