node-red 图片上传七牛云

准备工作

1、需要先安装七牛云的官方sdk:

npm i qiniu

2、为了保证文件名称的唯一性,用到了node-red的一个 friendly-id 插件,直接通过菜单安装

开发

因为很多地方用到七牛云,所以抽取出了一个子流程
先看下完整流程


image.png

friendly-id 节点生成唯一的 id,保存在 msg.uuid 属性中

上传七牛云 是个 function 节点,

  1. 首先在 Setup 中 引入 七牛sdk


    image.png
  2. 我把需要的配置信息写到了 设置 ,每次部署节点时会执行一次


    image.png
  3. 上传的逻辑,直接从qiniu的官方文档复制过来稍微修改下


    image.png

这里用的是 formUploader.put 直接把 req.req.file[0].buffer 上传到七牛云
另外可以发现这里的function节点的代码结构和之前的不太一样,之前在代码最后都是 return msg , 但这里并没有。
return msg 只适合用在同步处理后,直接把 msg 传递到下游节点
但在上传七牛云时, formUploader.put 是个异步方法,只有在上传完成的回调方法中,通过 node.send(msg) 往下游节点传递消息
当然也可以使用 async / await 的语法

return (async() =>{
  const resp = await formUploader.put(...)
  return msg
})()

小结

1、可以自行安装插件,function节点支持import,使用很方便
2、如果function节点有仅需要执行一次的代码,可以放到 设置中。比如全局配置信息可以单独建立对应的function节点,通过 global.set() 配置,在使用的时候通过 global.get() 读取
3、异步处理可以用 node.send 传递消息,
4、可以正常使用 async / await 语法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容