Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Node.js 在node js中完成特定数据库操作后使用multer上传文件_Node.js_Express_Multer - Fatal编程技术网

Node.js 在node js中完成特定数据库操作后使用multer上传文件

Node.js 在node js中完成特定数据库操作后使用multer上传文件,node.js,express,multer,Node.js,Express,Multer,我正在使用multer通过express上传文件。 在上传文件之前,是否有方法执行数据库操作? 我需要执行一个有条件的检查,检查用户在数据库中的插入是否成功取决于此,应该执行文件上载。要根据需要使用multer,您可以使用以下代码: var path = require('path'); var multer = require('multer'); var storage = multer.diskStorage({ destination: function(req, file,

我正在使用multer通过express上传文件。 在上传文件之前,是否有方法执行数据库操作?
我需要执行一个有条件的检查,检查用户在数据库中的插入是否成功取决于此,应该执行文件上载。

要根据需要使用
multer
,您可以使用以下代码:

var path = require('path');
var multer = require('multer');

var storage = multer.diskStorage({
    destination: function(req, file, callback) {
        callback(null, './uploads')
    },
    filename: function(req, file, callback) {
        console.log(file)
        callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
    }
});
destination
用于指定上传文件存储目录的路径

filename
用于确定文件夹中的文件名称。在本例中,我们使用Date.now()的返回值而不是原始名称上载文件,并使用内置的path Node.js库添加原始文件扩展名

path.extname(file.originalname);

app.post('/insertUpload', function(req, res) {
    // connection  is db connection variable
    var username = req.body.username;
    var query = connection.query('INSERT INTO users SET ?', username,
      function(err, result) {
        console.log(result);
        if(!err){ // if not error after insert

          var upload = multer({
             storage: storage
          }).single('userFile')
          upload(req, res, function(err) {
            res.end('File is uploaded')
          });
        }
    });


});

要根据需要使用
multer
,您可以使用以下代码:

var path = require('path');
var multer = require('multer');

var storage = multer.diskStorage({
    destination: function(req, file, callback) {
        callback(null, './uploads')
    },
    filename: function(req, file, callback) {
        console.log(file)
        callback(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
    }
});
destination
用于指定上传文件存储目录的路径

filename
用于确定文件夹中的文件名称。在本例中,我们使用Date.now()的返回值而不是原始名称上载文件,并使用内置的path Node.js库添加原始文件扩展名

path.extname(file.originalname);

app.post('/insertUpload', function(req, res) {
    // connection  is db connection variable
    var username = req.body.username;
    var query = connection.query('INSERT INTO users SET ?', username,
      function(err, result) {
        console.log(result);
        if(!err){ // if not error after insert

          var upload = multer({
             storage: storage
          }).single('userFile')
          upload(req, res, function(err) {
            res.end('File is uploaded')
          });
        }
    });


});

在这一行
var query=connection.query('INSERT INTO users SET?',username
我想从
req.body
访问username,因为它将来自用户它只是查询将数据插入表中..我相信您会将其替换为您的数据库查询我已经编辑了答案,请检查。现在使用req.body.usernamereq.body在
上载之前总是未定义的(req,res,function(err){res.end('File is uploaded')})
req.body未定义可能有各种原因。请在这一行检查此答案
var query=connection.query('INSERT INTO users SET?',username
我想从
req.body
访问username,因为它将来自用户它只是查询将数据插入表中..我相信您会将其替换为您的数据库查询我已经编辑了答案,请检查。现在使用req.body.usernamereq.body在
上载之前总是未定义的(req,res,function(err){res.end('File is upload')})
req.body未定义可能有各种原因。请检查此答案