如何在NodeJs中发送multipart / form-data PUT请求?

时间:2014-10-29 14:18:17

标签: node.js

我需要发送一个这样的数组:

[
  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选项。

2 个答案:

答案 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的最新版本。做完之后,一切都为我修好了。

应该阻止你,直到该功能被释放:)