我需要发送一个这样的数组:
[
a: 'b',
file: {file content}
]
我尝试使用带有formData选项的request模块执行此操作:
request.put({
url: 'http://example.com/upload',
formData: {
a: 'b',
file: fs.createReadStream(__dirname + '/for-test.jpg')
}
});
在此示例中,PUT数据将为空,似乎忽略了formData选项。
答案 0 :(得分:2)
您需要使用body
属性,并且需要对对象进行字符串化。
request({
method: 'PUT',
url: 'http://example.com/upload',
body: JSON.stringify({
a: 'b',
file: fs.createReadStream(__dirname + '/for-test.jpg')
})
});
答案 1 :(得分:2)
我尝试了你的代码并遇到了同样的问题。经过一番挖掘,我意识到你正在使用一个未发布的功能。
如果您在当前的npm包中搜索字符串' formData',它就不存在了。如果你在github上克隆最新的,并搜索它,字符串' formData'出现(我使用grep
,btw进行了搜索),并且even a test for it。
如果您想使用此功能预发布,您可以将package.json挂钩以指向repo:
{
...
"dependencies": {
...
"request":"git+https://github.com/request/request.git#master",
...
}
}
新的npm安装将为您提供具有该功能的github的最新版本。做完之后,一切都为我修好了。
应该阻止你,直到该功能被释放:)