你好我试图将1个请求中的多个图像发布到webservice,但是webservice中的数组值只是最后一个。 这是我的代码:
var request = require('request');
console.log(images.length);
request.post(
{
url: path_api,
formData: {
user_id : username,
room_id : room_id,
filename : files[0].name,
origin_file : fs.createReadStream(path_origin_image),
attachments:["rizal1","rizal2"],
api_key :process.env.AWP_API_KEY
}
}, function(err, res, body) {
console.log(err);
console.log(body);
callback(err,res,body);
}
);
这是我在服务器上的输出帖子,很奇怪 output server 我想要这样的输出 desired output
感谢
答案 0 :(得分:0)
@idhehold感谢你的答案就像一个魅力,这里是完整的解决方案
var request = require('request');
console.log(images.length);
request.post(
{
url: path_api,
formData: {
user_id : username,
room_id : room_id,
filename : files[0].name,
origin_file : fs.createReadStream(path_origin_image),
"attachments[0]":"rizal1",
"attachments[1]":"rizal2",
api_key :process.env.AWP_API_KEY
}
}, function(err, res, body) {
console.log(err);
console.log(body);
callback(err,res,body);
}
);
答案 1 :(得分:0)
对于那些寻求使用请求以相同格式名称(例如files[]
)发送文件的人(这就是我最后提出这个问题的方式),可以通过修改forms()
来实现。下一个刻度之前的对象。这使您可以处理多部分表单数据,还可以使用重复的键。
let req = request(`/path/to/data`, {
headers: {
'Content-Type': 'multipart/form-data'
},
formData: { }
}, (_err, resp, body) => {
// handle the response
});
// the request actually gets sent at the next tick so we can still manipulate this
let form = req.form();
form.append('name', 'test');
form.append('files[]', Buffer.from('Hello world', 'utf-8'), {
contentType: 'text/plain',
filename: 'hello01.txt'
});
form.append('files[]', Buffer.from('Cheers', 'utf-8'), {
contentType: 'text/plain',
filename: 'world02.txt'
});
请注意,我遇到了从async
函数调用此函数的问题,将函数修改为非异步可用。