Reputation: 8928
I have two node servers. One is trying to read files and the other send files. My server is set up like
.post(upload.array('test'), function (req, res) {
if (!Array.isArray(req.files)) {
res.status(400).json({success: false, err: 'Must have test(s))'});
return;
}
var files = req.files; <-- This is always null
My Client looks like
var http = require('request-promise');
var request = require('request');
var fs = require('fs');
var FormData = require('form-data');
var form = new FormData();
tests.forEach(function(testName){
form.append('test', fs.createReadStream(__dirname+'/tests/'+testName));
});
var options = {
method: 'POST',
uri: 'https://' + name +'/rest/api',
rejectUnauthorized: false,
timeout: 2000,
form: form,
};
return http(options);
However the server is never able to find the files. The response always says err: Must have test(s).
Can anyone help me to find out what I am doing wrong in my client?
Upvotes: 0
Views: 71
Reputation: 106736
The form
option is for urlencoded forms. For multipart forms you will want to set the formData
option instead. Also, you don't need to explicitly use the form-data
module. Example:
var requestPromise = require('request-promise');
var fs = require('fs');
var formTests = new Array(tests.length);
for (var i = 0; i < tests.length; ++i)
formTests[i] = fs.createReadStream(__dirname + '/tests/' + tests[i]);
var options = {
method: 'POST',
uri: 'https://' + name +'/rest/api',
rejectUnauthorized: false,
timeout: 2000,
formData: {
tests: formTests
}
};
return requestPromise(options);
Upvotes: 1