npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

torn-node-qiniu-sdk

v1.5.2

Published

nodejs,七牛云异步操作模块

Downloads

5

Readme

node-qiniu-sdk

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

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

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

安装

$ npm install node-qiniu-sdk

测试用例

某些请求是需要人民币的,不要频繁测试

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

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

使用简介

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

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')
});
  • 处理前:
  • 处理后:

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

处理后

没有使用request模块

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

这两点在某些请求时会出错

1.1.3版本以后使用了新写的请求模块,node-request-slim。

错误码快查

官方文档

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