我想将文件中的一些数据上传到服务器上,如果没错,我需要将文件和所有数据传递到formData中,然后在服务器端进行解析。
我还使用Multer解析正文并将文件保存在服务器上,但是我不知道如何从formData中获取文本数据,因为Multer会从我的数据中获取不带formData的只读文件表格。
我如何在Multer中获取所有数据,或者在没有Multer的情况下获取表格数据?
前端
let file = file[0];
//some file from input
let data = {
name: 'Jhon',
job: 'Engener',
time: 12
}
let formData = new FormData();
formData.append('formData', JSON.stringy(data))
axios.post('someURL', formData);
后端
const multer = require('multer');
const fs = require('fs');
let storage = multer.diskStorage({
destanation: (req, file, callback) => {
callback(null, '/files')
},
filename: (req, file, callback) => {
callback(null, 'newFile');
}
});
let upload = multer({storage)};
api.post('/', upload.any(), (req, res) => {
});
答案 0 :(得分:1)
如果我理解正确,那么代码应该在同一操作中处理上传并获取一些发布的数据。前一阵子,我编写了这段代码,效果很好,也许有帮助:
exports.myPostFunction = function (req, res) {
var multer = require('multer');
var path = require('path');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, process.env.UPLOAD_FOLDER);
},
filename: function (req, file, cb) {
cb(null, path.extname(file.originalname));
}
});
// Treat posted file
var upload = multer({ storage: storage }).fields([
{ name: 'myImage', maxCount: 1 },
]);
upload(req, res, function(err) {
if (err) {
// ...
}
// Get posted data:
var obj = {
myField1: req.body.myField1,
myField2: req.body.myField2
};
// ...
});
};
在前端:
var formData = new FormData();
formData.append("myField1", data.myField1);
formData.append("myField2", data.myField2);
formData.append("myImage", data.image[0]); // myInputFile.files[0]
$.ajax({
url: 'someURL',
type: 'put',
processData: false,
data: formData,
success: function(data) {}
});