开通服务,创建空间用于文件存储,参考接入指引
点击下面链接下载 Nodejs SDK (含 Demo)
测试Demo位于SDK压缩包的 test
目录下,在 test.js
填入开发者自己的AK、SK和namespace 后,运行(mocha test.js)即可。
1 2 | var wantu = new WANTU( '<user app key>' , '<user secret key>' ); //填入ak,sk var namespace = "<user namespace>" ; //填写空间名 |
如何获取 AK 和 SK?
1 | var wantu = new WANTU(AK,SK); |
初始化传入参数:
AK: 开发者的AccessKeyId。
SK: 开发者的AccessKeySecret。
用户 AK/SK 的获取方式请参照第 3 节 Demo 中的描述。
每个方法均有回调函数callback,说明如下:
1 2 3 4 5 6 | err : 错误信息 res : { statusCode:请求返回的状态码, 200 为成功 ; headers:请求返回头信息 ; data:请求返回数据 ; } |
指定需要上传的文件路径,调用上传接口完成文件上传。
建议10M以下的文件采用此种方式。调用示例如下:
1 | singleUpload(uploadPolicy, filePath, dir, meta, _var, callback) |
1 2 3 4 5 6 | uploadPolicy 必填,上传策略,json格式,具体参见API说明文档 filepath 必填,本地文件路径 dir 必填,上传到文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ meta 必填,用户自定义的文件meta信息,没有为 "" _var 必填,魔法变量,没有为 "" callback 必填,回调 |
如果开发者想要在代码中调用分片上传接口,控制并了解分片上传的细节,SDK中封装了分片上传相关的方法。建议上传大文件时采用此种方式。注:每块分片大小需大于100KB。
如下所示:
1) 初始化分片上传
1 | multiUploadInit(uploadPolicy, filePath, dir, meta, _var, curChunkSize, callback) |
1 2 3 4 5 6 7 | uploadPolicy 必填,上传策略,json格式,具体参见API说明文档 filepath 必填,本地文件路径 dir 必填,上传到文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ meta 必填,用户自定义的文件meta信息,没有为 "" _var 必填,魔法变量,没有为 "" curChunkSize 必填,当前分片大小 callback 必填,回调 |
2) 分片上传文件
1 | multiUploadBlock(uploadPolicy, filePath, id, uploadId, partNumber, chunkStart, curChunkSize, callback) |
1 2 3 4 5 6 7 | uploadPolicy 必填,上传策略,json格式,具体参见API说明文档 filepath 必填,本地文件路径 dir 必填,上传到文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ meta 必填,用户自定义的文件meta信息,没有为 "" _var 必填,魔法变量,没有为 "" chunkSize 必填,分片大小,默认是4MB callback 必填,回调 |
3) 分片上传完成
1 | multiUploadComplete(uploadPolicy, filePath, id, uploadId, eTags, callback) |
1 2 3 4 5 6 | uploadPolicy 必填,上传策略,json格式,具体参见API说明文档 filepath 必填,本地文件路径 id 必填,上传唯一id,由初始化分片上传返回 uploadId 必填,分片上传Id,由初始化分片上传返回 eTags 必填,每个分片上传后返回的eTag组成的数组 callback 必填,回调 |
4) 分片上传取消
1 | cancelMultiUpload(uploadPolicy, filePath, id, uploadId, callback) |
1 2 3 4 5 | uploadPolicy 必填,上传策略,json格式,具体参见API说明文档 filepath 必填,本地文件路径 id 必填,上传唯一id,由初始化分片上传返回 uploadId 必填,分片上传Id,由初始化分片上传返回 callback 必填,回调 |
如果开发者想要自动对上传的文件进行分片,则可以使用如下分片上传接口。
1 | multiUpload(uploadPolicy, filePath, dir, meta, _var, chunkSize, callback) |
1 2 3 4 5 6 7 | uploadPolicy 必填,上传策略,json格式,具体参见API说明文档 filepath 必填,本地文件路径 dir 必填,上传到文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ meta 必填,用户自定义的文件meta信息,没有为 "" _var 必填,魔法变量,没有为 "" chunkSize 必填,分片大小,默认是4MB callback 必填,回调 |
1 | delFile(namespace, dir, file, callback) |
1 2 3 4 | namespace 必填,命名空间 dir 必填,文件所在文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ file 必填,文件名称 callback 必填,回调 |
1 | existFile(namespace, dir, file, callback) |
1 2 3 4 | namespace 必填,命名空间 dir 必填,文件所在文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ file 必填,文件名称 callback 必填,回调 |
1 | getFile(namespace, dir, file, callback) |
1 2 3 4 | namespace 必填,命名空间 dir 必填,文件所在文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ file 必填,文件名称 callback 必填,回调 |
1 | listFiles(namespace, dir, currentPage, pageSize, callback) |
1 2 3 4 5 | namespace 必填,命名空间 dir 必填,文件所在文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ currentPage 必填,当前页码,从 1 开始 pageSize 必填,当前页内文件个数,最大 100 callback 必填,回调 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | { totalCount: 总数 totalPage: 页数 result: [ { namespace: “名称空间” name: “文件名” path: “文件全路径” dir: “文件全路径” createStamp: “创建时间” modifyStamp “最后修改时间” md5: “文件md5信息” mineType: “文件元类型” size: “文件大小” url: “文件访问url” }, … ] } |
1 | createDir(namespace, dir, callback) |
1 2 3 | namespace 必填,命名空间 dir 必填,文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ callback 必填,回调 |
1 | delDir(namespace, dir, callback) |
1 2 3 | namespace 必填,命名空间 dir 必填,文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ callback 必填,回调 |
1 | existDir(namespace, dir, callback) |
1 2 3 | namespace 必填,命名空间 dir 必填,文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ callback 必填,回调 |
1 | listDirs(namespace, dir, currentPage, pageSize, callback) |
1 2 3 4 5 | namespace 必填,命名空间 dir 必填,文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ currentPage 必填,当前页码,从 1 开始 pageSize 必填,当前页内文件个数,最大 100 callback 必填,回调 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | { totalCount: 总数 totalPage: 页数 result: [ { namespace: “名称空间” name: “目录名” path: “目录全路径” createStamp: “创建时间” modifyStamp “最后修改时间” }, … ] } |
1 | addPts(namespace, dir, file, fops, notifyURL, force, callback) |
1 2 3 4 5 6 7 | namespace 必填,命名空间 dir 必填,文件所在文件夹路径;以’/‘开头,不能以’/‘结尾;根目录为’/’ file 必填,文件名称 fops 必填,持久化操作参数, notifyURL 必填,处理结果通知接收URL force 必填, 0 为不覆盖转换, 1 为强制覆盖转换 callback 必填,回调 |
1 | {persistentId: "任务Id" } |
1 | getPts(persistentId, callback) |
1 2 | persistentId 必填,任务id callback 必填,回调 |
1 | mediaEncode(input, output, watermark, encodeTemplate, watermarkTemplate, usePreset, force, notifyURL, callback) |
1 2 3 4 5 6 7 8 9 | input: 输入文件,object类型:{namespace:’‘,dir: ’‘,file: ’’},其中namespace: 命名空间,dir: 目录,file: 文件名 output: 输出文件,object类型:{namespace:’‘,dir: ’‘,file: ’’},其中namespace: 命名空间,dir: 目录,file: 文件名 watermark: 水印,object类型:{namespace:’‘,dir: ’‘,file: ’’},其中namespace: 命名空间,dir: 目录,file: 文件名 encodeTemplate: 模板名称, watermarkTemplate:用户自定义水印模板, usePreset:是否使用系统模板 force: 是否强制覆盖输出文件 notifyUrl: 通知url,任务结束之后会调用这个url callback: 回调 |
1 | {taskId: "任务Id" } |
1 | mediaEncodeResult(taskId, callback) |
1 2 | taskId 必填,任务id, callback 必填,回调 |
1 | scanPorn(files, callback) |
1 2 | files: 需要扫描的文件的数组,[{namespace:’‘,dir:’‘,file:’’},…],其中namespace: 命名空间,dir: 目录,file: 文件名 callback 必填,回调 |
1 | feedback(feedbacks, callback) |
1 2 3 4 5 6 7 8 9 10 11 | feedbacks: 需要反馈的对象数组: [ { file:{namespace: '' ,dir: '' ,name: '' }, //其中namespace: 命名空间,dir: 目录,name: 文件名 type: '' , //0或者1,0是非黄图,1是黄图 score: '' , //[0-1] 黄图分值,越高则黄图嫌疑越高 wrong: '' //true代表用户认为多媒体鉴黄服务的结果有问题,反馈给多媒体云用于提升算法准确率,当为true的时候必须传score。false代表用户提交的,有益于算法提升的样本,为false的时候不需要提交score }, ... ] callback: 必填,回调 |