如何实现node上传文件到后台?

我在本地有一个主机,装了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后端一直说没有拿到文件

阅读 2k
1 个回答

题主是把node作中间层吗?

你上传文件,传个可读流,fs.createReadStream有啥用啊,得把可读流中的数据拿出来用啊。

代码没怎么看明白,

let req = request.post(host + url, function (err, resp, body) {  }

这个请求的返回值是啥啊?

let form = req.form();  

这个返回值req,调用form是干啥用的?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题