我目前正在创建一种病毒扫描功能。
我正在尝试做的事情:当文件上传到指定的 blob 存储容器时,会触发 Azure 函数。该功能将扫描文件中的病毒,如果干净,则将文件移动到另一个 blob 存储容器。
我创建了一个在创建 blob 时触发的 Azure 函数(即上传文件时),但我不知道如何将病毒扫描集成到混合中。
我尝试使用ClamAV.js,但无法正常工作。我不确定如何安装 ClamAV(守护程序),以便它可以被 Azure 函数使用,所以这可能是它无法正常工作的原因。另外,我不确定如何安装 npm 包(在 Azure 函数中),所以我必须将实际的 js 文件从包上传到函数,然后再导入。不确定这是否有效......
我曾尝试使用AttachmentScanner,但我无法在 Azure 函数中使用它(更具体地说,我无法让该函数发送 POST 请求)。
我面临的一个主要问题是我认为我无法解决:如何在 Azure 函数中使用 npm 包?我可以在某个地方安装它们吗?我可以只下载包并手动将 js 文件上传到 Azure Function 并以这种方式导入吗?
这是我使用 AttachmentScanner 的尝试:
module.exports = async function (context, myBlob) {
var req = new XMLHttpRequest();
req.open( "POST", "https://beta.attachmentscanner.com/requests", false );
req.headers({
"authorization": "bearer [OMITTED]",
"content-type": "application/json"
});
req.type("json");
req.send({
"url": context.bindingData.uri //"http://www.attachmentscanner.com/eicar.com"
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
context.log(req.responseText);
});
context.log("JavaScript blob trigger function processed blob \n Name:", context.bindingData.name, "\n Blob Size:", myBlob.length, "Bytes");
context.log("context");
context.log(context);
context.log("myBlob");
context.log(myBlob);
};
这会产生一个错误:Exception: ReferenceError: XMLHttpRequest is not defined
使用以下函数,我可以检测 blob 并打印有关它的信息:
module.exports = async function (context, myBlob) {
context.log("JavaScript blob trigger function processed blob \n Name:", context.bindingData.name, "\n Blob Size:", myBlob.length, "Bytes");
context.log("context");
context.log(context);
context.log();
context.log("myBlob");
context.log(myBlob);
};
任何帮助表示赞赏!