1

我需要在 nodejs 中编写一个 azure 函数来压缩上传到 azure blob 存储中的任何文件。我有这段代码可以完成这项工作

const zlib = require('zlib');
const fs = require('fs');

const def = zlib.createDeflate();

input = fs.createReadStream('file.json')
output = fs.createWriteStream('file-def.json')

input.pipe(def).pipe(output)

the azure function

nodejs函数的定义是这样的

module.exports = async function (context, myBlob) {

其中 myBlob 包含文件的内容。

现在压缩使用流

如何将文件内容转换为流并将转换后的文件保存为上面脚本中的输出变量作为 blob 存储中的新文件但在另一个容器中?

谢谢你

4

1 回答 1

0

JavaScript 和 Java 函数将整个 blob 加载到可以使用 context.bindings 访问的内存中。名称。(其中Name是 function.json 文件中指定的输入绑定名称。)

有关更多详细信息,请查看Azure Functions 的 Azure Blob 存储触发器

由于字符串/内容已经在内存中,因此不需要使用流来处理zlib. 下面的代码片段使用deflateSyncfrom 方法zlib执行压缩。

var input = context.bindings.myBlob;
    
var inputBuffer = Buffer.from(input);
var deflatedOutput = zlib.deflateSync(inputBuffer);

//the output can be then made available to output binding
context.bindings.myOutputBlob = deflatedOutput;

你可以参考这里的链接来讨论这个话题。

于 2021-08-27T05:52:18.463 回答