【发布时间】:2017-01-23 18:58:37
【问题描述】:
我正在创建一个节点服务器,可以将文件上传到该节点服务器,然后将其发送到也使用节点的存储服务器。 为此,我正在使用 Form-Data 模块页面上描述的这种方法:
var formData = {
my_field: 'my_value',
my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),
};
request.post({url:'http://service.com/upload', formData: formData}, function(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
console.log('Upload successful! Server responded with:', body);
});
我的问题是,当我尝试在存储服务器上写入文件时,它会创建一个包含内容 [object Object] 的文本文件。
这是我的代码:
main.js
var form = new formData();
form = {
'oldFileName': oldName,
'newFileName': newName,
'file': fs.createReadStream(FILEPATH),
};
request.post({url:'http://127.0.0.1:9001/upload', form: form}, function(err, httpResponse, body) {
if (err) {
return console.error('upload failed:', err);
}
});
storage.js
app.post('/upload', function(req,res){
//Filenames are displayed without problem
console.log(req.body.newFileName);
console.log(req.body.oldFileName);
fs.writeFile('./testing/' + req.body.newFileName, req.body.file, function(err) {
if(err) {
return console.log(err);
}
})
我确定我遗漏了一些非常明显的东西,但我似乎无法让它发挥作用。
【问题讨论】:
-
我认为你必须使用
multer或类似的库来接受multipart/form-datainstorage.js -
我试过了(很抱歉应该提到它),但
multer似乎无法识别构造表单中的文件
标签: javascript node.js forms request