загружать файлы разных типов в одной форме, используя NodeJs и multer в облачный - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь загрузить два разных файла в одной форме в NodeJ, используя multer и cloudinary, используя метод .fields (fields) следующим образом:

Это форма:

<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 (имя поля) и результат.secure_url

но я не могу отобразить его, он показывает мне это только когда я в трее (Cannot GET /tmp/1551115731848chTestfile.pdf)

1 Ответ

0 голосов
/ 26 февраля 2019

Попробуйте использовать любой метод multer и для получения пути к файлам выполните 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);
                });
            });
        }
...