gpt4 book ai didi

javascript - 通过 POST 将文件传递给 NodeJS,然后传递给另一个 API,而不保存在磁盘上

转载 作者:行者123 更新时间:2023-12-05 00:27:01 25 4
gpt4 key购买 nike

我需要在 React UI(使用 axios)中从用户那里接收文件,使用 Express 通过 POST 将此文件发送到 NodeJS 方法,然后,我需要通过 POST 直接将相同的文件发送到另一个 API(.NET WebAPI)无需保存在磁盘上。我正在尝试直接传递数据文件(req.files.file.data),但 .NET API 无法识别请求中的文件。

是否有可能在“var”中创建一个临时文件并像我从磁盘读取文件时一样发送它?

此示例适用于本地文件:

var formData = {
form: "{ abn: '666666666' }",
files: JSON.stringify([
{
name: "file1",
type: "1",
number: "6666"
},
{
name: "file2",
type: "3",
number: "3333"
},
]),
// Pass multiple values /w an Array
attachments: [
fs.createReadStream(__dirname + '/../file1.txt'),
fs.createReadStream(__dirname + '/../file2.txt')
],
};
var reqs = request.post({url:'https://tms-dev-api.micway.com.au/api/company/file', formData: formData, json: true}, function optionalCallback(err, response, body) {
if (err) {
return res.send(err);
}
return res.send({
status: response.statusCode,
body: body
});
});

我正在创建一个本地文件,然后通过它发送;但是,我不认为这是最好的方法。像这样:
router.post('/file', function(req, res) {
var fstream;
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
fstream = fs.createWriteStream(__dirname + '/' + filename);
file.pipe(fstream);

var formData = {
attachments: [
fs.createReadStream(__dirname + '/' + filename)
],
};
var reqs = request.post({url:'https://tms-dev-api.micway.com.au/api/company/file', formData: formData, json: true}, function optionalCallback(err, response, body) {
if (err) {
return res.send(err);
}

console.log({
status: response.statusCode,
body: body
})

return res.send({
status: response.statusCode,
body: body
});
});
});
});

谢谢!

最佳答案

我认为有效的解决方案是在执行期间保存它,读取和操作 other 中的数据以将其发送到其他 API,并在收到响应后立即将其从磁盘中删除。

关于javascript - 通过 POST 将文件传递给 NodeJS,然后传递给另一个 API,而不保存在磁盘上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41697539/

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