我正在尝试使用multer和cloudinary方法,通过如下所示的.fields(fields)方法在NodeJ中以一种形式上传两个不同的文件:
这是表格:
<form action="/requestsList" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label for ="prop">Upload Proposal:</label> <input id="prop" name ="prop" type="file" accept="application/pdf">
</div>
<div class="form-group">
<label for ="cv">Upload CV:</label> <input id="cv" name ="cv" type="file" accept="application/pdf">
</div>
<div class="form-group">
<button class="btn btn-lg btn-primary btn-block">Submit!</button>
</div>
这是路线:
router.post("/requestsList" , middleware.isLoggedIn , upload.fields([{ name: "prop" },{ name: "cv" }]) , function(req , res){
cloudinary.uploader.upload(req.files.path, function(result) {
var Name = req.body.name ;
var KSUID = req.body.id ;
var Email = req.body.email ;
var PNumber = req.body.phone ;
var prop = req.files["prop"][0].path;
var cv = req.files["cv"][0].path;
var author = {
id: req.user._id,
username: req.user.username,
};
var newRequest = {Name: Name , KSUID: KSUID , Email: Email , PhonenNumber: PNumber , Proposal: prop , Cv: cv ,author: author} ;
Request.create(newRequest , function(err , newlyCreated){
if(err){
console.log(err);
req.flash("error" , err.message);
res.redirect("back");
} else{
console.log(newlyCreated);
req.flash("success" , "Request Successfully Sent");
res.redirect("/home") ;
}
});
});
});
我希望它给我一个像我使用.single(fieldname)和result.secure_url的链接
但是我无法显示它,它只会在我托盘时显示给我(无法获取/tmp/1551115731848chTestfile.pdf)
答案 0 :(得分:0)
尝试使用multer的“ any”方法,并通过forEach获取文件路径。
类似的东西:
app.post('/', upload.any([{ name: "prop" }, { name: "cv" }]), (req, res) => {
var files = req.files;
if (files) {
files.forEach(function (file) {
cloudinary.uploader.upload(file.path, function (result) {
console.log(result);
});
});
}