gpt4 book ai didi

node.js - 如何在我的 HTTP POST 请求正文中发送一个 'ogg' 文件?

转载 作者:可可西里 更新时间:2023-11-01 17:25:41 25 4
gpt4 key购买 nike

我正在开发一个 nodejs 项目,它需要通过向 API 发出 POST 请求来获得响应,我需要在请求正文中发送音频文件 (audio.ogg)。在“ postman ”中,我们可以通过从本地选择文件并发出请求来执行类似的操作。

click this for POSTMAN request demo

如何使用像“request”这样的 npm 包对我的 Nodejs 应用程序执行相同的操作?

到目前为止我的代码在这里被引用:

var request = require('request');
var fs = require('fs');
var path = require('path');

router.get('/', function(req, res, next) {
var options = {
method: 'post',
body: {
'language': "<language>",
'audio_file':path.join(__dirname, 'audio.ogg')

}, // Javascript object
json: true,
url: "<API>",
headers: {
'Authorization': "<token>",
'ContentType': "application/x-www-form-urlencoded"
}
}

request(options, function (err, res, body) {
if (err) {
console.log('Error :', err)
return
}
console.log(' Body :', body)

});
// res.render('index', { title: 'Express' });
});

最佳答案

options.headers 中,由于您要发送二进制数据,因此您的 ContentType 应该是“multipart/form-data”而不是“application/x-www-form-urlencoded”作为二进制数据注意到使用 x-www-form-urlencoded 传输效率低下(请参阅 this SO answer 了解原因的详细信息)。

幸运的是,您已经在使用的request 库包括用于处理multipart/form-data 请求的form-data 库。 request 为此提供了 formData 选项,您可以使用它而不是 body 选项。

更新后的选项对象可能看起来像这样:

var formData = {
// Pass a simple key-value pair
language: '<language>',
// Pass data via Streams
my_file: fs.createReadStream(__dirname + '/audio.ogg')
};

var options = {
method: 'post',
formData: formData,
url: "<API>",
headers: {
'Authorization': "<token>",
'ContentType': "multipart/form-data"
}
}

有关详细信息,请查看request 的文档 here

关于node.js - 如何在我的 HTTP POST 请求正文中发送一个 'ogg' 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192543/

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