【发布时间】:2016-06-07 08:39:40
【问题描述】:
我有两个通过 http 相互通信的 node.js/express 服务器。 服务器 A 也与浏览器通信,可以处理文件上传请求。当文件上传到 服务器 A 时,我想将其原样传输到 服务器 B 以进行进一步处理。最好的方法是什么?最好使用request-promise 模块,这是我用于两台服务器之间通信的模块。
这是我目前得到的,但是我无法在服务器之间传输文件,文件成功上传到服务器A,发送到@987654325时没有错误@,但服务器 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 上传控制器:
'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 进程文件:
这里我想处理来自 Server A 的文件,但 req.file 是 undefined
'use strict';
module.exports = (req, res) => {
if(req.file) {
// here i want to do something with the file.
}
};
【问题讨论】:
-
@kasey 处理通过 WebSockets 的通信。这个问题涉及通过 http 进行通信的两台服务器。
标签: javascript node.js express multer