gpt4 book ai didi

node.js - 无法在Azure Function上的Node JS中接收和解析多部分以及文本数据

转载 作者:行者123 更新时间:2023-12-03 04:14:04 25 4
gpt4 key购买 nike

我正在 Node JS 中创建一个 Azure 函数。我需要发送多部分数据(图像或文件)以及文本数据(其他信息,例如保存文件的位置等)。

从 UI 中,我将数据(文件和文本)作为表单数据发送(new FormData())

在 Azure Function 上,我使用 parse-multipart 来读取多部分数据。

我的 Azure 函数看起来像这样。

var stream = require('stream');
var multipart = require("parse-multipart");
module.exports = async function (context, req) {

var bodyBuffer = Buffer.from(req.body);
// get boundary for multipart data e.g. ------WebKitFormBoundaryDtbT5UpPj83kllfw
var boundary = multipart.getBoundary(req.headers['content-type']);
// parse the body
var parts = multipart.Parse(bodyBuffer, boundary);
var fileStream0 = new stream.Readable();
fileStream0.push(parts[0].data);
fileStream0.push(null);
// Further Uses this Stream to save files to Azure Storage
}

这段代码工作正常,因为我能够保存文件。但不幸的是无法检索表单数据中发送的文本值。

最佳答案

parts 变量是任意数组,其中每一项都是所提交表单的一个字段。因此,您必须循环该数组才能获取发送的所有字段。

我相信您必须将代码更改为这样的内容

var stream = require('stream');
var multipart = require("parse-multipart-data");

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

var bodyBuffer = Buffer.from(req.body);
// get boundary for multipart data e.g. ------WebKitFormBoundaryDtbT5UpPj83kllfw
var boundary = multipart.getBoundary(req.headers['content-type']);
// parse the body
var parts = multipart.parse(bodyBuffer, boundary);
for (var part of parts) {
if(part.filename) {
// handle file
} else {
// handle other form field
}
}
}

关于node.js - 无法在Azure Function上的Node JS中接收和解析多部分以及文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com