我正在使用 multer 通过快递上传文件。 有没有办法在上传文件之前执行数据库操作? 我需要执行一个条件检查,确定用户在数据库中的插入是否成功,具体取决于那个,应该执行文件上传。
答案 0 :(得分:0)
根据需要使用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()的返回值代替原始名称上传文件,并使用内置路径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')
});
}
});
});