- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个 nodejs 项目,它需要通过向 API 发出 POST 请求来获得响应,我需要在请求正文中发送音频文件 (audio.ogg)。在“ postman ”中,我们可以通过从本地选择文件并发出请求来执行类似的操作。
如何使用像“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/
今天小米米家官方微博宣布,小米手表尊享版开启限量定金预售,3 月 3 日早 10 点起支付尾款。购买即赠 399 元小米真无线蓝牙耳机 Air 2。 小米手表尊享版相比普通版核心没有变化,采用
今天下午,小米官方公布了小爱触屏音箱Pro 8,可以看到触控屏幕尺寸比较大,音箱上“长”了一个平板。据悉,小米小爱触屏音箱Pro 8具有白色的配色设计,下方有一个长条状的扬声器,上方带有一个尺寸比较
我是一名优秀的程序员,十分优秀!