我有两个使用http互相通信的node.js/express服务器。 服务器A也与浏览器通信,并可以处理文件上传请求。当文件上传到服务器A我想将它原样传输到服务器B进一步处理。最好的办法是什么?最好与request-promise模块,这是我用于两台服务器之间的通信。在两个node.js服务器之间通过http传输文件
这是我走到这一步,但我无法在服务器之间传输文件,该文件被成功上传到服务器A,并没有错误,同时将其发送到server B
,但服务器B是无法将请求识别为文件。我在这里错过了什么?
服务器A路线:
'use strict';
// Routes
const express = require('express');
const router = express.Router();
const multer = require('multer');
const upload = multer();
const uploadController = require('./controllers/file/upload');
router.post('/upload',upload.single('file'),uploadController);
module.exports = router;
服务器A uploadController:
'use strict';
const RP = require('request-promise');
module.exports = (req, res) => {
const body = req.body;
if(req.file) {
const file = req.file;
RP('http://serverB.net/process', {
method: 'POST',
formData: {file_buffer: file.buffer},
body: body
})
.then((response) => {
return res.status(200).send(response);
})
.catch((e) => {
return res.status(500).send(e.message);
})
}
else {
return res.status(500).send('unable to upload file');
}
};
服务器B路线:
'use strict';
// Routes
const express = require('express');
const router = express.Router();
const multer = require('multer');
const process = multer();
const processFile = require('./controllers/file/processFile');
router.post('/process', process.single('file'), processFile);
module.exports = router;
服务器B processFile:
在这里,我想从服务器A处理文件,但req.file
是undefined
'use strict';
module.exports = (req, res) => {
if(req.file) {
// here i want to do something with the file.
}
};
试试这个, http://stackoverflow.com/questions/22279922/file-data-transfer-between-two-node-js-servers – kasey
@kasey这涉及** WebSockets **通信。这个问题涉及通过** http **进行通信的两台服务器。 – zero298
您是否找到理想的解决方案?我正在尝试相同的事情,但无法发送文件。使用[form-data](https:// github。com/form-data/form-data)与[request](https://github.com/request/request) –