我需要在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存储中但在另一个容器中的新文件?
谢谢你们
JavaScript和Java函数将整个blob加载到内存中,可以使用context.bindings.Name.访问(其中Name是function.json文件中指定的输入绑定名称。)
有关更多详细信息,请查看Azure函数的Azure Blob存储触发器
由于字符串/内容已经存在于内存中,因此使用< code>zlib就不需要流了。下面的代码片段使用< code>zlib中的< code>deflateSync方法来执行压缩。
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;
你可以参考这里的链接来讨论这个话题。