node.js 微信生成二维码B接口,不占用硬盘存储直接上传到七牛服务器实现
2018-07-10 18:23
666 查看
这几天工作中遇到需要预生成微信二维码的需求。
小程序开发文档中讲的也非常简略,B接口很坑爹地返回一个二进制流(也许这就是无限制数量的原因吧,微信只提供计算服务,不提供存储服务。)
原本利用fetch来处理,着实费了一番手脚
return fetch(url, init) .then( (response)=>{ return response.text() })通过这种形式获取微信api返回的二维码二进制流,再上传到七牛。是行不通的,原因是response.text()包含的并不仅仅是图片的二进制数据,使整个网页返回的数据。跟本文需求是风马牛不相及的。
花了时间查了下fetch pipe的实现,很遗憾没有查到。
幸运的是request包含了pipe的实现。git地址:https://github.com/request/request
废话不多说,直接上码。[code]const request = require('request'); const concat = require('concat-stream'); const qiniu = require('qiniu'); function concatPro (buffer){ var formUploader = new qiniu.form_up.FormUploader(config); var putExtra = new qiniu.form_up.PutExtra(); /** * 两种形式。 * 1、直接利用pipe过来的buffer,put到七牛 * 2、将pipe过来的buffer转成可读流,putStream到七牛 * 照qiniu\qiniu\storage\form源码来看,两者无区别,本身都会转成可读流形式putStream */ // const readableStream = Stream.Readable(); // readableStream.push(buffer); // readableStream.push(null); return new Promise( (resolve, reject)=> { // formUploader.putStream(uploadToken, fileName, readableStream, putExtra, function (respErr, respBody, respInfo) { // 传入可读流 formUploader.put(uploadToken, fileName, buffer, putExtra, function (respErr, respBody, respInfo) { // 传入buffer if (respErr) { reject(respErr); } if (respInfo.statusCode == 200) { console.log(respBody); } else { console.log(respInfo.statusCode); console.log(respBody); } resolve(respBody); }); }); } return request({ method: "post", url: URL, body: JSON.stringify( { scene: xxx, page: xxx } ) // pipe导出的是数据流,而输出concatPro是个普通函数,我们需要把输入流转化为普通的buffer,这时使用concat-stream }).pipe(concat(concatPro));
拓展阅读: 理解nodejs的stream和pipe机制 阅读更多
相关文章推荐
- 【原创】.Net 微信 JS-SDK图片、语音上传接口的实现(MVC)-(二 、上传图片服务器操作)
- 用NodeJS/express-4.0实现的静态文件服务器(serveStatic插件直接支持HTTP Range请求,因此可用来做mp4流媒体服务器)
- 微信调用照相拍照等 js 接口的权限配置 和 照片上传和下载实现
- PHP实现微信JS-SDK接口选择相册及拍照并上传的方法 lieren_chengshi 2016-12-05 8463 查看 0评论 公开 原文 举报 取精 添加收藏 本文实例讲述了
- 微信小程序访问node.js接口服务器搭建教程
- node.js 图片上传 接口 实现
- 基于Node.js的微信JS-SDK后端接口实现
- 微信JS-SDK接口 + FLASK实现图片上传
- 微信公众号开发《四》使用微信JS-SDK实现手机图片上传,支持压缩、预览。并下载图片到自身服务器
- 微信js-sdk图片接口实现一键上传.md
- PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
- .NET开发微信小程序-生成二维码/上传图片到服务器
- node.js实现微信JS-API封装接口的示例代码
- PHP调用微信JS-SDK接口上传头像保存到服务器
- Node.js 实现简单的接口服务器的实例代码
- 详解基于Node.js的微信JS-SDK后端接口实现代码
- 生成二维码并直接上传到七牛上
- Node.js 实现简单的接口服务器
- 微信小程序访问node.js接口服务器搭建教程
- PHP实现微信JS-SDK接口选择相册及拍照并上传的方法