我正在尝试将.zip文件以及两个文本字段一起上传,以描述上传的文件到我的Node.js服务器,然后到附加的MySql数据库表。
我有两条POST路由,一条通过表单,另一条在JavaScript中,用于将表单数据发送给异步函数,以将req.file和req.body对象分解为变量,然后通过查询字符串发送至数据库。
已压缩的文件按照Multer位置定义的说明保存到上载目录,因此可以正常工作。
该文件未发送到异步功能,因此我认为AJAX发布请求有问题。
我已经研究了大约一个星期,我不认为我需要将表单数据转换为BLOB格式以发送到数据库,因为默认情况下它应该接受zip文件作为BLOB输入。
我只尝试过使用POST路由的形式(例如action =“ / upload” method =“ POST”)。这确实将表单数据(文件和文本输入)发送到异步函数,但没有将其发送到数据库。
我是否需要两个发帖请求?他们在互相打扰吗?
我真的很固执,非常感谢您的帮助。
这是upload.html中的上传表单和AJAX发布路线:
$(document).ready(function() {
$("#upload").click(function() {
$("#form-upload").toggle();
})
$('#form-submit').submit(function(e){
e.preventDefault();
var vilename = $('#vilename').val();
var viledesc = $('#viledesc').val();
$(this).ajaxSubmit({
data: {vile_name: vilename, vile_desc: viledesc},
contentType: 'multipart/form-data',
success: function(response){
console.log('File uploaded and form submitted');
}
});
return false;
});
});
</script>
</head>
<body>
<div id="msgs">
</div>
<button type="button" id="upload" value="Upload">Upload</button>
<form id="form-upload" action="/upload" method="POST" enctype="multipart/form-data" style="display:none">
Upload folder: <input type="file" id="uservile" name="userVile">
VR name: <input type="text" id="vilename" name="vileName">
VR description: <input type="text" id="viledesc" name="vileDesc">
<input type="submit" id="form-submit">
</form>
</body>
这是lib / main.js中的Async函数:
const upload = async (req, res) => {
try {
const {user_vile} = req.file;an
const {user_id} = req.session.key;
const {vile_name, vile_desc} = req.body;
const resp = await db.upload(user_id, user_vile, vile_name, vile_desc);
req.session.key = resp;
res.send({error: false, message: "Vile added"});
} catch (e) {
res.send({error: true, message: "Vile upload failed"})
console.log(e);
}
};
这是API.js中的ROUTE帖子:
router.post('/upload', upload.single('userVile'), main.upload);
这是db.js中的MySql查询字符串:
const upload = async (user_id, user_vile, vile_name, vile_desc) => {
const results = await testDb.query(`INSERT into user_v_file (user_id,user_vile,vile_name,vile_desc) VALUES '${user_id}', '${user_vile}', '${vile_name}', '${vile_desc}'`);
return results
};
当我仅使用表单中的post route时,该错误表明我的Sql查询语法有问题。
当我同时使用两个发布路线时,错误显示为“ TypeError:无法分解'undefined'或'null'的属性user_vile
。”在异步功能上。