Multer 上传文件在路由器 post 节点 js 中不起作用
Multer upload file not working inside router post node js
我想做的是在 req.body
进行一些测试后将文件上传到服务器。我熟悉 这似乎是确切的问题,但无法解决问题。我的代码是:
var express = require('express');
var router = express.Router();
var fs=require('fs')
var multer = require('multer');
var config = require(__dirname +'/../config.js')
var rootArchiveFolder = config.rootFolder
var getFields = multer();
router.post('/:module', getFields.any(), (req, res, next)=> {
var module = req.params.module;
console.log("req.body", req.body);
console.log("req.params.module", req.params.module);
switch (module){
case 'archive':
var makeDBEntry = require('../models/makeDBEntry.js');
makeDBEntry.makeArchiveEntry(req.body)
.then( responseData => {
console.log("all ok")
var tmpdir = req.body.p_receive_date;
var dir = tmpdir.replace(/\//g, "-");
dir = rootArchiveFolder + dir;
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
var storage = multer.diskStorage({
destination: function(req,file,cb){
cb(null,dir);
},
filename: function(req,file,cb){
// cb(null,req.body.p_doc_no);
cb(null, req.files[0].originalname);
}
})
var upload = multer({storage:storage});
// upload.any(req, res, next); doesnt seems to work
//how can i upload my files here after all my test are done?
res.end();
})
.catch( e => {
res.status(500).send(response.message);
console.log(e.message);
});
res.send("ok")
break;
}
});
我在这里错过了什么?
我设法解决它的方法是将文件上传到 tmp 文件夹,然后进行检查,如果正确,则将文件移动到正确的文件夹中,否则我将删除它们。这是我能做的最好的了。我知道 multer.js 提供的代码将作为中间件执行,因此运行测试和上传之后的点与中间件逻辑不一致。我想我在这里寻找后门。问题依旧..
我想做的是在 req.body
进行一些测试后将文件上传到服务器。我熟悉
var express = require('express');
var router = express.Router();
var fs=require('fs')
var multer = require('multer');
var config = require(__dirname +'/../config.js')
var rootArchiveFolder = config.rootFolder
var getFields = multer();
router.post('/:module', getFields.any(), (req, res, next)=> {
var module = req.params.module;
console.log("req.body", req.body);
console.log("req.params.module", req.params.module);
switch (module){
case 'archive':
var makeDBEntry = require('../models/makeDBEntry.js');
makeDBEntry.makeArchiveEntry(req.body)
.then( responseData => {
console.log("all ok")
var tmpdir = req.body.p_receive_date;
var dir = tmpdir.replace(/\//g, "-");
dir = rootArchiveFolder + dir;
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
var storage = multer.diskStorage({
destination: function(req,file,cb){
cb(null,dir);
},
filename: function(req,file,cb){
// cb(null,req.body.p_doc_no);
cb(null, req.files[0].originalname);
}
})
var upload = multer({storage:storage});
// upload.any(req, res, next); doesnt seems to work
//how can i upload my files here after all my test are done?
res.end();
})
.catch( e => {
res.status(500).send(response.message);
console.log(e.message);
});
res.send("ok")
break;
}
});
我在这里错过了什么?
我设法解决它的方法是将文件上传到 tmp 文件夹,然后进行检查,如果正确,则将文件移动到正确的文件夹中,否则我将删除它们。这是我能做的最好的了。我知道 multer.js 提供的代码将作为中间件执行,因此运行测试和上传之后的点与中间件逻辑不一致。我想我在这里寻找后门。问题依旧..