我有一个用户表单,用户可以在其系统中选择一个文件并使用FormData将其上载到另一个服务器。当测试直接发送到api时它工作正常。但是我需要在发送之前修改头文件。所以我发布到客户端应用程序的后端。使用请求或axios nodejs将文件上传到另一个服务器
router.post('/upload', function(req, res, next) {
//...some axios or request logic
var fs = require('fs');
var request = require('request');
var formData = {
my_field: 'my_value',
my_file: fs.createReadStream(__dirname + '/example.doc'),
};
request.post({url:'http://someothereapp/upload-file', formData: formData}, function(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
res.send('good!');
});
});
axios或request的伟大工程张贴范式或GET请求。但是当我尝试使用它来发送文件时,它不起作用。上面的代码总是返回成功,但不会上传文件。所以我去here,仍然不明白,看看我失踪。
我有验证和跟踪关闭其他服务器(本地),而测试,所以我不必修改标题。它具有如下的代码,如果我的文件直接从Web表单发送给它工作正常,但不能从我的客户快递的应用程序:
// http://someothereapp/upload-file
router.post('/upload-file', (req, res, next) => {
let multer = require('multer')
let p = path.join(__dirname, '../uploads');
let storage = multer.diskStorage({
destination: function(req, file, callback) {
callback(null, p)
},
filename: function(req, file, callback) {
console.log('what is file', file)
callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
})
let upload = multer({
storage: storage
}).single('userFile')
upload(req, res, function(err) {
res.end('File is uploaded')
})
});
我看到this问题,并认为这可能意味着它不会与爱可信可能但你如何处理请求?例如,在post ... upload代码中,我如何将my_file作为用户在其表单中选择的文件?为什么即使它没有上传文件也不会失败?