Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Multer上传文件在路由器post节点js内不工作_Javascript_Node.js_File_Multer - Fatal编程技术网

Javascript Multer上传文件在路由器post节点js内不工作

Javascript Multer上传文件在路由器post节点js内不工作,javascript,node.js,file,multer,Javascript,Node.js,File,Multer,我想做的是在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

我想做的是在
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提供了将作为中间件执行的代码,因此运行测试并在之后上载的点与中间件逻辑不一致。我想我在这里寻找后门。问题仍然存在。

您可以在这里看到multer并以其为例:在这个SO答案中,我演示了如何使用带有post端点的multer将文件上载到某个特定位置