2014-10-29 24 views
1

我需要發送一個數組是這樣的:如何在NodeJs中發送multipart/form-data PUT請求?

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

我嘗試使用request模塊FORMDATA選擇它做:

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

在這個例子中PUT數據將是空的,好像FORMDATA選項被忽略。

回答

1

我試過你的代碼,並有同樣的問題。經過一番挖掘,我意識到你正在使用未發佈的功能。

如果您搜索字符串'formData'的當前npm包,它不存在。如果你克隆最新的GitHub,並搜索,字符串'formData'出現(我做了搜索使用grep,順便說一句),並有even a test for it

如果要使用此功能搶鮮你可以掛鉤您的package.json指向回購:

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

新鮮NPM安裝會給你從與該功能GitHub上的最新版本。做完之後,所有事情都爲我解決了。

這應該讓你一直到功能發佈:)

+0

它也可能會引入隨機錯誤。你應該指出具體的修訂版,讓你得到你想要的,而不是在#master – 2014-11-03 18:39:03

+0

好提示@ T.W.R.Cole! – mattr 2014-11-03 18:45:17

2

您需要使用body屬性,並且需要將對象串聯起來。

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