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

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

[ a: 'b', file: {file content} ] 

我试图使用formData选项使用请求模块:

 request.put({ url: 'http://example.com/upload', formData: { a: 'b', file: fs.createReadStream(__dirname + '/for-test.jpg') } }); 

在这个例子中,PUT数据将是空的,看起来像formData选项被忽略。

我试了你的代码,并有同样的问题。 经过一番挖掘,我意识到你正在使用未发布的function。

如果您searchstring“formData”的当前npm包,它不存在。 如果你克隆最新的github,并search,string“formData”出现(我做了使用grep ,btwsearch), 甚至有一个testing 。

如果你想使用这个functionprerelease你可以挂上你的package.json指向回购:

 { ... "dependencies": { ... "request":"git+https://github.com/request/request.git#master", ... } } 

一个新鲜的npm安装将给你带来这个function的最新github。 这样做之后,一切都为我着了。

这应该阻止你,直到function发布:)

你需要使用body属性,并且你需要对你的对象进行string化。

 request({ method: 'PUT', url: 'http://example.com/upload', body: JSON.stringify({ a: 'b', file: fs.createReadStream(__dirname + '/for-test.jpg') }) });