Node.js 如何发送';ogg&x27;我的HTTP POST请求主体中的文件?
我正在从事一个nodejs项目,该项目需要通过向API发出POST请求来获得响应,在该API中,我需要在请求体中发送一个音频文件(audio.ogg)。在“邮递员”中,我们可以通过从本地选择文件并发出请求来执行类似操作 如何使用像“request”这样的npm包对我的Nodejs应用程序执行相同的操作 这里引用了我的代码:Node.js 如何发送';ogg&x27;我的HTTP POST请求主体中的文件?,node.js,http,post,httprequest,postman,Node.js,Http,Post,Httprequest,Postman,我正在从事一个nodejs项目,该项目需要通过向API发出POST请求来获得响应,在该API中,我需要在请求体中发送一个音频文件(audio.ogg)。在“邮递员”中,我们可以通过从本地选择文件并发出请求来执行类似操作 如何使用像“request”这样的npm包对我的Nodejs应用程序执行相同的操作 这里引用了我的代码: var request = require('request'); var fs = require('fs'); var path = require('path');
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' });
});
var request=require('request');
var fs=需要('fs');
var path=require('path');
router.get('/',函数(req,res,next){
变量选项={
方法:“post”,
正文:{
“语言”:“,
“audio\u file”:path.join(\u dirname,'audio.ogg')
},//Javascript对象
是的,
url:“”,
标题:{
“授权”:“,
“ContentType”:“application/x-www-form-urlencoded”
}
}
请求(选项、功能(错误、恢复、正文){
如果(错误){
console.log('Error:',err)
返回
}
console.log('Body:',Body)
});
//res.render('index',{title:'Express'});
});
在选项.headers
中,由于您发送的是二进制数据,您的内容类型应该是“多部分/表单数据”,而不是“应用程序/x-www-form-urlencoded”,因为使用x-www-form-urlencoded
传输二进制数据效率低下(有关原因的详细信息,请参阅)
幸运的是,您已经使用的请求
库中包含了表单数据
库,用于处理多部分/表单数据
请求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"
}
}
var formData={
//传递一个简单的键值对
语言:'',
//通过流传递数据
my_文件:fs.createReadStream(_dirname+'/audio.ogg')
};
变量选项={
方法:“post”,
formData:formData,
url:“