将缓冲区编码到base64无效

时间:2017-09-25 21:07:26

标签: node.js base64 aws-lambda

我有一个带图像网址的函数,调整图像缓冲区的大小并返回它的base64图像格式。令人沮丧的是我有这个工作,看不到会影响这个功能的任何代码更改,但有些事情不太正确。当我记录base64时,我看到什么看起来像是base64编码,但它比以前对同一图像要小很多,并且它以%结束,而不是预期的,以前见过{ {1}}。这是我的相当直接的功能:

=

再次,这之前工作正常,令人担忧的是,我没有得到错误。返回响应的代码仍会记录下来:

const bufferRequest = request.defaults({ encoding: null });
const sharp = require('sharp');

function returnBase64(imgUrl, params) {
    return new Promise((resolve, reject) => {
      bufferRequest.get(imgUrl, params, function (err, res, body) {
        let resized = sharp(body).resize(params.width, params.height);
        resized.toFormat('jpeg')
        .toBuffer()
        .then((resultBuffer) => {
          let formattedImage = "data:" + res.headers["content-type"] + ";base64," + new Buffer(resultBuffer).toString('base64');
          console.log(formattedImage);
          resolve(formattedImage);
        })
        .catch((error) => {
          reject(error);
        })
      });
    })
}

如您所见,缺少base64 { "statusCode": 200, "headers": { "Content-Type": "image/jpeg" }, "body": "data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAGQAZADASIAAhEBAxEB/8QAHAAAAgMBAQEBAAAAAAAAAAAABAUDBgcCAQgA/8QARBAAAgECBAQDBQYFAwIFBQEBAQIDBBEABRIhBjFBURMiYTJxgZGhBxQjscHwFUJS0eEzYvEkgggWcpKiNENjstIl4v/EABoBAAIDAQEAAAAAAAAAAAAAAAIDAQQFAAb/xAAxEQABBAEDAgQEBgMBAQAAAAABAAIDESEEEjFBUQUTImEycaHwFIGRscHRI0Lh8VL/2gAMAwEAAhEDEQA/AA1oY0neJrkAXUAd79fTE1NGQ6qIlKyLyC877EfA/nhskQlEMjKhOkA6huPW3obfXEbopCuGUMR0HOxtcfnjyPmE8r2y5am8ZgtQ8YhBBCP5jvbmL98TUpeOjaE6mVCV0t5ltfy2v8vjiNX1NcLcabAkHfuMSUjGar8F4wwlFpCoOx6A+psDgbNVagt7riuhSoEiurMyi635EncG5/e2KnQR+BFLBspWo5g7kEc/dt0xf2iLxhbLrOwB6kXIB/fI4qWcQmHMonQ+WUDWDsNjff68sN077tiG+qcUSGWCzW8RUtcel+ffa/yxw41wvFNKAANkTrfYi/vH1x7QyjQoZvNYXVdrn1/ffHTmQt5CsYv/ADdO/wCmFZukVKWnsUR410qVs2rmLHvgBzoYEWaxAKnlYf8AOCo4wxlivJKVu4LCy% ,并且关闭了json标记。以前身体要大得多。这是iTerm的事情还是我做了些傻事?这个=是什么意思,它是一个特殊的角色还是外卡?我确实被封锁了。

更新

我注意到上述问题仅在我使用%库测试时使用命令lambda-local进行测试。 lambda-local -f ~/Desktop/project/handler.js -e ~/Desktop/lambdaTesting/testEvent.json如上所示。

但是当我通过运行console.log(formattedImage)运行使用mocha的测试套件时,会出现完整的base64,以预期的npm test结束。这对我来说缩小到两件事中的一件:

1:lambda-local存在一个问题,等待我不知道的完整响应。

2:mocha.done()处理的异步问题没有被lambda-local处理。

0 个答案:

没有答案