0

我正在开发一个 azure 函数,在节点 js 中运行。此函数应从 blob 中获取图像并将其转换为 base64 字符串。问题是当我调用toString('base64')我的函数时挂起(看起来像一些无限循环)。我该如何解决这个问题以及导致问题的原因是什么?

函数.json

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "post"
      ],
      "route": "my_func"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    },
    {
      "name": "templateImage",
      "type": "blob",
      "path": "assets/{templateImage}.jpg",
      "dataType": "binary",
      "connection": "Storage",
      "direction": "in"
    }
  ]
}

index.js

module.exports = async function (context, req) {
   let templateImage = context.bindings.templateImage; // This is Buffer.
   console.log(templateImage); // I can log it. Will see something like this: <Buffer ff d8 ff e0 00...
   console.log(templateImage.toString('base64')); // I want to get base64, but after calling it my function is stuck.
    ...
}

更新: 我认为值得一提的是,该功能仅在本地开发中挂起。在 azure 门户中它会进行转换,但结果看起来很奇怪:����\u0000\u0010JFIF\u0000\u0001\u0002\u0001\u0001,\u0001,\u0000\u0000��\u0000,Photoshop 。虽然它应该是这样的:data:image/jpeg;base64,/9j/4AAQ...

4

1 回答 1

0

我在我的网站上进行了测试,效果很好。您可以参考以下代码进行故障排除。

在 index.js 中,注意添加myinputint 参数

module.exports = async function (context, req,myinput) {
    context.log('JavaScript HTTP trigger function processed a request.');
    let me = context.bindings.myinput;
    console.log(me);
    console.log(me.toString('base64'));
}

本地主机中的快照: 在此处输入图像描述

门户中的快照: 在此处输入图像描述

于 2020-09-01T08:59:18.350 回答