我在本地有一个主机,装了node,然后要把这个主机的一些监控视频或者其他文件上传到服务器,用的是post去请求java接口,这个怎么实现
function httpPost (url, params, callback, contentType = 'application/json') {
if (contentType == 'application/x-www-form-urlencoded') {
request.post({url: host + url, form:{key:'value'}}, function(error, response, body) {
if (!error && response.statusCode \== 200) {
callback(body)
}
})
} else if (contentType == 'multipart/form-data') {
let req = request.post(host + url, function (err, resp, body) {
logger.info(err)
logger.info(resp.statusCode)
if (err) {
console.log('Error!');
} else {
if (resp.statusCode \== 200){
callback(body)
}
}
});
let form = req.form();
for (let i in params) {
form.append(i, params\[i\])
}
} else {
request({
url: host + url,
method: "POST",
json: true,
headers: {
"content-type": "application/json",
},
body: JSON.stringify(params)
}, function(error, response, body) {
if (!error && response.statusCode \== 200) {
callback(body)
}
});
}
}
然后调用
httpPost('/customer/palyback/uploadVedio', {
file: (fs.createReadStream('./video/0226f.png')),
lyyUserId: lyyUserId
}, (res) => {
logger.info(res)
}, 'multipart/form-data')
java后端一直说没有拿到文件
题主是把node作中间层吗?
你上传文件,传个可读流,fs.createReadStream有啥用啊,得把可读流中的数据拿出来用啊。
代码没怎么看明白,
这个请求的返回值是啥啊?
这个返回值req,调用form是干啥用的?