我正在使用这些行来初始化multer:
file_size_limit=1000000;
var multer = require('multer');
upload = multer({ dest: 'upload/', limits: { fileSize: global.file_size_limit }}).array('fileUploaded');
在我使用的路线中,例如:
router.post('/', global.upload, function(req, res, next) {
我已经用busboy实现的是,我可以创建一个管理部分,并更改文件大小限制,这限制了上传文件的大小。由于var busboy = ...
功能位于router.post('/', function(req, res, next){})
内,因此无需重新启动服务器。
如果不重新启动服务器,我无法在multer中执行此操作。
是否可以在正在访问的给定路线上重新分配upload
变量和新的multer设置?
可能是这样的......
router.get('/', function(req, res, next){
global.upload = multer({ dest: 'upload/', limits: { fileSize: new_file_size_limit }}).array('fileUploaded');
});
现在,我能想到的是将fileSize
的新设置保存在数据库中,然后编写一个.js文件,该文件将使用nodemon重新启动服务器(监视代码更改并重新启动,如果有的话) ...
这可以在不重启服务器的情况下完成吗?
答案 0 :(得分:0)
好的,我发现了如何做到这一点。对于面临此问题的其他人,我在此处发布解决方案。 upload变量可以嵌套在路由的req,res中。 (上传变量不一定是路线本身的参数)
代码如下所示:
router.post('/', function(req, res, next) {
var upload = multer({ dest: 'upload/', limits: { fileSize: req.app.locals.size }}).array('myfile');
upload(req, res,function(err) {
if(err) {
return res.end(err.toString());
}
console.log(req.body);
var tmp_path = req.files[0].path;
var target_path = '/home/' + req.files[0].originalname;
fs.rename(tmp_path, target_path, function(err) {
if (err) throw err;
});
res.redirect('back');
});
});