1.6.6 • Published 5 years ago

node-qiniu-sdk v1.6.6

Weekly downloads
30
License
MIT
Repository
github
Last release
5 years ago

node-qiniu-sdk

使用 ES2017 async functions 来操作七牛云,接口名称与官方接口对应,轻松上手,文档齐全

qiniu的官方sdk不太符合日常需要,所以有时间写了个模块,你也可去qiniu官方查看官方SDK

模块主要包含七牛云以下产品与服务:

安装

$ npm install node-qiniu-sdk

测试用例

某些请求是需要人民币的,不要频繁测试(单次测试的费用非常非常少)

目前测试用例共104个,如果api我还没有写出来,请先看对应的测试用例 DEBUG=test mocha可以查看操作返回的具体的数据

第一次测试会下载一些测试文件,如果网络不好会出现before部分超时,测试资源请看node-qiniu-sdk-resource

av.pm3u8测试接口有可能出现超时的情况

# 先配置你的/test/resource/qiniu.config.json文件再测试
# qiniu.config.json是放置AccessKey和SecretKey的配置文件
# 格式与qiniu.config.default.json相同,你需要配置你的qiniu.config.json
$ mocha

# 如果想看返回的数据信息可以加上DEBUG=test
$ DEBUG=test mocha

# 如果想看操作信息可以加上DEBUG=qiniu-sdk(例如:分片上传的步骤)
$ DEBUG=qiniu-sdk mocha

package.json

  • 1.1.3版本以后使用node-request-slim

    本来使用的是request的,但是:

    1. 由于request模块在提交content-type为text/plain时,会对数据JSON.stringify,所以会多一对“"”分号
    2. request为防止url异常会把url给eccodeURIComponent

    这两点在某些请求时会出错,导致请求失败

  • 1.6.0版本以后使用qiniu-auth模块加密

    把加密的部分单独拿出去做一个新的模块,方便其它开发者创建自己的七牛云请求模块

使用简介

每个方法都与官网的对应,更多方法可参考文档

const Qiniu = require('node-qiniu-sdk');
const qiniu = new Qiniu('<Your AccessKey>', '<Your SecretKey>');

// 所有的方法都返回promise,这里我就直接用await了

// 创建管理储存空间的对象
const bucket = qiniu.bucket('<存储空间名称>');

// 如果你之前没有存储空间,使用mk方法可以创建一个
await bucket.mk();

// 删除存储空间
await bucket.drop();

// 创建管理文件的对象
const file = qiniu.file('<存储空间名称>:<文件名称>');

// 上传文件,这里会使用流的形式上传
await file.upload({ path: '<本地文件路径>' });

// 删除文件
await file.delete();

请求错误

如果请求时,七牛云响应了错误信息(statusCode不为200或298)时,操作会抛出异常,这里用pandora推送数据失败举例:

其它错误码信息,请查看错误码快查

try {
  await pandora.send({
    // 前提是不存在名字为test的repo
    repoName: 'test',
    content: [
      { userName: '小张', age: 12, addresses: "beijing"},
      { userName: '小王', age: 13, addresses: "hangzhou"}
    ]
  });
} catch(error) {
  // error信息如下:
  // {
  //   statusCode: 404,
  //   body: {
  //     error: 'E18102: The specified repo "test" does not exist'
  //   },
  //   errmsg:	'资源不存在,包括空间资源不存在;镜像源资源不存在。'
  // }
}

各模块功能

模块名称所属产品或服务模块的功能
bucket对象储存储存空间创建、设置镜像源、设置访问权限、获取空间域名、资源列举、删除
file对象储存文件上传、重命名、复制、删除、修改状态、更新生命周期、修改存储类型、资源元信息查询、资源元信息修改、第三方资源抓取、镜像资源更新、分片上传
statistic对象储存数据统计接口
cdn融合CDN日志下载、日志分析、缓存刷新、刷新查询、预取、预取查询、批量查询cdn带宽、批量查询cdn流量
image智能多媒体API获取图片基本信息、图片EXIF信息、图片平均色调信息,图像的瘦身处理、基本处理、高级处理、水印处理、圆角处理以及图片的审核、鉴黄、鉴暴恐、政治人物识别、人脸检测、1:1人脸比对、1:N人脸比对、以图搜图、OCR身份证识别
av智能多媒体API视频三鉴、获取单个视频的识别结果、锐智转码、普通音视频转码、音视频分段、音视频切片(HLS)、视频水印、音视频拼接、音视频元信息、视频帧缩略图、视频采样缩略图、实时音视频转码、多码率自适应转码、私有M3U8
resource智能多媒体API获取文件hash值、markdown转html、生成资源二维码、资源合并、资源压缩
pandora智能日志管理平台数据推送 API
sdk对象储存、持久化处理、处理结果另存获取Bucket列表、异步第三方资源抓取、文件批量操作、下载资源、持久化处理、处理结果另存

image.processing图片处理介绍

processing处理参数详情

const Qiniu = require('node-qiniu-sdk');
await Qiniu.image.processing(common.url, {
  imageslim: true,  // 图片瘦身(imageslim)将存储在七牛的JPEG、PNG格式的图片实时压缩而尽可能不影响画质。
  imageView: { w: 200, h: 300 },  // 图片基本处理接口可对图片进行缩略操作,生成各种缩略图。
  imageMogr: { blur: '20x2', rotate: 45 }, // 图片高级处理接口为开发者提供了一系列高级图片处理功能,包括缩放、裁剪、旋转等。
  watermark: { image: 'https://odum9helk.qnssl.com/qiniu-logo.png', scale: 0.3 },  // 七牛云存储提供三种水印接口
  roundPic: { radius: 20 }  // 图片圆角处理

  // 不指定path、stream、saveas会返回处理语句的url

  // 指定path或stream会保存到本地(path和stream原理相同)
  // path: __dirname + '/processing.test.jpg',
  // stream: fs.createWriteStream(__dirname + '/processing.test.jpg'),

  // 指定saveas会把处理的结果保存到指定七牛云仓库
  // saveas: qiniu.saveas(common.bucketName, 'processing.jpg')
});
  • 处理前:
  • 处理后:

由于旋转后背景色自动填充为白色,请到这个链接查看圆角效果:链接

处理后

错误码快查

官方文档

HTTP状态码说明
298部分操作执行成功
400请求报文格式错误,包括上传时,上传表单格式错误。例如incorrect region表示上传域名与上传空间的区域不符,此时需要升级 SDK 版本。
401认证授权失败,错误信息包括密钥信息不正确;数字签名错误;授权已超时,例如token not specified表示上传请求中没有带 token ,可以抓包验证后排查代码逻辑; token out of date表示 token 过期,推荐 token 过期时间设置为 3600 秒(1 小时),如果是客户端上传,建议每次上传从服务端获取新的 token;bad token表示 token 错误,说明生成 token 的算法有问题,建议直接使用七牛服务端 SDK 生成 token。
403权限不足,拒绝访问。例如key doesn't match scope表示上传文件指定的 key 和上传 token 中,putPolicy 的 scope 字段不符。上传指定的 key 必须跟 scope 里的 key 完全匹配或者前缀匹配;ExpUser can only upload image/audio/video/plaintext表示账号是体验用户,体验用户只能上传文本、图片、音频、视频类型的文件,完成实名认证即可解决;not allowed表示您是体验用户,若想继续操作,请先前往实名认证。
404资源不存在,包括空间资源不存在;镜像源资源不存在。
405请求方式错误,主要指非预期的请求方式。
406上传的数据 CRC32 校验错误
413请求资源大小大于指定的最大值
419用户账号被冻结
478镜像回源失败,主要指镜像源服务器出现异常。
502错误网关
503服务端不可用
504服务端操作超时
573单个资源访问频率过高
579上传成功但是回调失败,包括业务服务器异常;七牛服务器异常;服务器间网络异常。需要确认回调服务器接受 POST 请求,并可以给出 200 的响应。
599服务端操作失败
608资源内容被修改
612指定资源不存在或已被删除
614目标资源已存在
630已创建的空间数量达到上限,无法创建新空间。
631指定空间不存在
640调用列举资源(list)接口时,指定非法的marker参数。
701在断点续上传过程中,后续上传接收地址不正确或ctx信息已过期。

如遇 5xx 系列错误,请将完整的错误信息(包括所有的 HTTP 响应头部)提交工单 给七牛云。

官方文档快捷方式

LICENSE

MIT

1.6.6

5 years ago

1.6.5

5 years ago

1.6.2

5 years ago

1.6.1

5 years ago

1.6.0

5 years ago

1.5.2

5 years ago

1.5.1

5 years ago

1.5.0

5 years ago

1.2.2

5 years ago

1.2.0

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.4

5 years ago

1.1.3

5 years ago

1.1.2

6 years ago

1.1.1

6 years ago

1.1.0

6 years ago

1.0.9

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago