node.js - Azure 函数(blob 触发器)使用 Nodejs 读取 CSV 文件
问题描述
使用 Nodejs 读取 azure 函数中的 myBlob 缓冲区参数并将其写入表存储的最佳方法是什么,因为我正在尝试使用大小为 16MB 的文件并且它太慢了。
另一件事是当我使用 context.log() 查看文件的内容时,它不会显示文件的所有内容,而只是显示其中的一部分。
module.exports = async function (context, myBlob) {
let data = myBlob.toString("utf8");
context.log("context", data);
};
解决方案
您可以在 nodejs 中使用 getBlobToStream 或 getBlobToText 来获取 blob 数据。下面是读取 blob 所需的 function.json:
{
"bindings": [
{
"name": "Blob",
"type": "blobTrigger",
"dataType": "binary",
"direction": "in",
"path": "folderpath",
"connection": "CONN_STR"
}
]
}
与您提供的代码相关,我对其进行了一些更改,如下所示:
var blobName = 'BlobName';
blobService.getBlobToText(
containerName,
blobName,
function(err, blobContent, blob) {
if (err) {
console.error("Couldn't download blob %s", blobName);
console.error(err);
} else {
console.log("Sucessfully downloaded blob %s", blobName);
console.log(blobContent);
}
});
Converting to the stream as below:
module.exports = async function (context, myBlob) {
context.log(context.bindings.myBlob.toString());
context.log("Blob:", context.bindingData.blobTrigger, "\n Blob Size:", myBlob.length, "Bytes");
};
另请查看此SO以获得更多见解。
推荐阅读
- laravel - 如何在 laravel 中为经过身份验证或未经身份验证的用户创建单个端点?
- google-apps-script - 将各种数据格式传递到 Google 表格图表
- vuejs2 - 如何动态设置类名?
- javascript - 创建带参数的 Promise
- java - 当从另一个类调用使用它的方法时,为什么自动装配对象为空?
- button - 角度日期选择器未显示在 mat-menu 中
- swift - 在 Swift 中使用 available
- python - 无法使用 pip install spacy 安装 spacy
- javascript - 如何复制 JavaScript 生成的文本?
- pandas - 分解时间间隔并将它们分配给相应的时间