我试图在这里做一些棘手的事情,我正在将multer
成功上传到MemoryStorage
的文件。关键是我需要从内存中获取文件并发送到另一台服务器。这就是我在做的事情:
var express = require('express');
var router = express.Router();
var path = require('path');
const multer = require('multer');
const FormData = require('form-data');
router.post('/files', upload.single('file'), function (req, res) {
const axios = require('axios');
const url = configuration.dataHub.url + '/api/files';
var config = {
headers: {'x-token': req.session.token, 'Content-Type': 'application/json'}
};
const form = new FormData();
form.append('file', req.file.buffer);
if (req.session.hasOwnProperty('token')) {
axios.post(url, form, config)
.then(response => {
if (response.data.success) {
console.log("Arquivo enviado");
res.send({
success: true,
message: 'Arquivo enviado com sucesso!'
});
} else {
console.log("Arquivo nao enviado");
res.send({
success: false,
message: "Houve um problema ao enviar a ficha, verifique sua conexão ou tente novamente mais tarde."
});
}
})
.catch((error) => {
console.log("N Enviado", error.message);
res.send({
success: false,
message: "Houve um problema ao enviar o arquivo, verifique sua conexão ou tente novamente mais tarde."
});
});
} else {
res.send({
success: false,
session: false,
message: "Sua sessão expirou após 5 minutos sem uso. Faça login novamente!"
});
}
});
使用此代码,我收到错误:
结束后写
任何解决方案吗?
答案 0 :(得分:0)
而不是res.send()
尝试使用res.write()
并在您认为已完成所有处理的代码末尾使用一个res.send()
,而res.send()
应该跟随res.end()
希望这有帮助!
答案 1 :(得分:0)
我改为请求js,这样做,工作正常:
formData = {
file: {
value: file.buffer,
options: {
filename: file.originalname,
contentType: file.mimetype
}
}
};
var options = {
url: url,
headers: {
'x-token': req.session.token
},
formData: formData
};
request.post(options, function optionalCallback(err, httpResponse, body) {
if (err) {
res.send({
success: false,
session: true,
message: 'There is a problem sending the files!'
});
} else {
result = result.concat(JSON.parse(body));
res.send({
success: true,
session: true,
message: 'sucess!',
files: result
});
}
});