如何解决在Node.js中上传多个文件不包含multer?
目前,我可以将其发布到mongodb。很好。
问题 我应该能够发布多个彼此独立的附件,而不是一个附件,这N个上传将有N个不同的按钮。
const form = (req,res,next) => {
const file = req.files.photo;
file.name = `photo_${Math.random(0,10012)}-${Math.random(0,2000)}${
path.parse(file.name).ext
}`;
file.mv(`./public/uploads/${file.name}`,async (err) => {
if (err) {
console.error(err);
return res.status(500).json({
message: `Problem With File Upload`,});
}
const upload = await Form.create({
approved: req.body.approved,email_: req.body.email,formData: {
name: "req.body.formData.claimantName",nationality: "req.body.formData.claimantNationality",address: "req.body.formData.claimantAddress",email: "req.body.formData.claimantEmail",},attachments: [
{
powerOfAttorney: file.name,// these are the next
// disputeDocuments: req.body.formData.disputeDocuments,// arbitrationAgreement: req.body.formData.arbitrationAgreement,// cvOfArbitrator: req.body.formData.cvOfArbitrator,],});
return res.status(200).json({
success: true,message: `File Uploaded Successfully`,path: file.name,});
});
};
router.route("/add").post(form);
我尝试将const upload = await Form.create(...)
移到file.mv(...)
块之外并进行类似的操作`''
const file1 = req.files.photo1;
file1.name = photo_${Math.random(0,2000)}${ path.parse(file1.name).ext }
;
It doesn't work properly.
解决方法
我认为您可以在端点{} {1}}对象中的节点服务器的request
对象中获取上载的文件。
您的端点应捕获这样的文件
req.files
由于您将获得键值对的对象,因为const uploads = Object.values(req.files);
将是文件名key
将是包含名称等的文件数据对象。value
会将那个对象转换为具有上载文件信息的对象数组。之后,创建一个Object.values
,它将捕获如下所示的文件:
用于处理文件上传的功能
promise
之后,将上传的内容传递给Promise,并在handleFileUpload = (uploads) => {
return new Promise((resolve,reject) => {
const dbData = [];
uploads.forEach(async (upload) => {
const name = await `photo_${Math.random(0,10012)}-${Math.random(0,2000
)}${path.parse(upload.name).ext}`;
dbData.push(name);
await upload.mv(`your-path/${name}`,async (err) => {
if (err) {
reject("Something wrong");
}
});
});
resolve(dbData);
});
};
块中创建数据库insertion
。
then
handleFileUpload(uploads).then((response) => { ... }).catch((e) => { ... });
将具有所有图像路径。
注意:我正在考虑将文件为response
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。