Node.js 如何发送';ogg&x27;我的HTTP POST请求主体中的文件?

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');

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

如何使用像“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' });
});
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:“