在继续 Azure 文件上传之前,我需要验证 mongodb 文档是否存在。
该表单由一个文件和一个文本字段组成,所需的逻辑如下:
- 表单提交
- 获取文本字段
- 在 mongodb 中搜索包含文本字段数据的文档
- 如果该项目存在,则继续将文件上传到 Azure,否则返回
- 文件上传到 Azure
- 将 URL 保存到与 中找到的同一 MongoDB 文档中的文件中
我面临的问题是我无法触摸 form.on('part') 中的字段数据,并且无法首先使用 form.parse 使其工作。 这是我的代码,我愿意更改库并尽一切努力让它工作。
var form = new multiparty.Form();
var formField = "";
form.parse(req, function(err, fields, files) {
formField = fields.fieldinform[0];
});
console.log(formField); //empty async?
model
.findOne({ name: formField })
.then(obj => {
form.on("part", function(part) {
if (!part.filename) return;
var size = part.byteCount;
var name = part.filename;
var container = "test";
blobService.createBlockBlobFromStream(
container,
name,
part,
size,
function(error) {
if (error) {
console.log("failed");
}
}
);
});
})
.catch(e => {
//do not continue
});
非常感谢您的帮助!
最佳答案
经过大量搜索但没有找到正确的答案后,我决定使用 jquery,在提交之前将表单的操作 URL 更改为/upload/textintextfield,然后使用 Node 中的 req.params.textfield 获取该 URL。
<script>
$('#fileUploadForm').submit(function() {
$('#fileUploadForm').attr('action', '/upload/addvideo/' + $('#textfield').val())
return true;
});
</script>
关于node.js - NodeJS 多方文件上传到 Azure 和文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49598960/