2017-12-13 15 views
0
내가 파일을 업로드 할 때 파일을 업로드 multer을 사용하고

내 코드입니다 나에게 다음과 같은 오류 보여Multer는 파일 업로드 오류

var multer = require('multer'); 

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, '../public/uploads/') 
    }, 
    filename: function (req, file, cb) { 
    cb(null, file.fieldname + '-' + Date.now()) 
    } 
}); 

var upload = multer({ storage: storage }); 

EJS보기에서 내 양식은

<form action="class/<%= record.Class_Name %>/detial" method="post" enctype="multipart/form-data"> 
    <input type="text" name="UploaderName"> 
    input type="text" name="Title" > 
    <input type="file" name="ThesisFile"> 
     <button type="submit">Choose File</button> 
</form> 

내 경로 코드는 내가 양식을 제출할 때

router.post('/Class/:name/detial' , isLoggedIn , upload.single('ThesisFile') , function(req , res , next) { 
    var Name = req.body.UploaderName; 
    var Title = req.body.Title; 
    var file = req.body.ThesisFile; 
    var thesis = { 
    Submitted_By: Name, 
    Title : Title, 
    File: file 
    }; 
    ClassModel.findOne({ Class_Name : req.params.name } , function(err , record) { 
    record.ClassFiles.push(thesis); 
     record.save().then(function(record) { 
      req.flash('sucess_msg' , 'Thesis Added Sucessfully'); 
      res.render('class' , { 
      "record" : record 
      }); 
     }); 
    }); 
}); 

이 오류 enter image description here 다음 날 쇼

+0

문제는 '동작'형식에서 나옵니다. –

+0

무엇이되어야합니까? –

+0

나는 행동으로 전달 된 경로가 잘못되었다고 생각한다. –

답변

0
<form id="myForm" name="myForm" action="class/<%= record.Class_Name %>/detial" method="POST" enctype="multipart/form-data"> 
    <input type="text" name="uploaderName"> 
    <input type="text" name="title" > 
    <input type="file" id="thesisFile" name="thesisFile"> 
    <button type="submit">Upload</button> 
</form> 

요청을 HTML로 처리하는 대신 JavaScript로 처리 할 수 ​​있습니다.

const $ = (selector) => { 
    return document.querySelector(selector); 
}; 

const submit = (event) => { 
    event.preventDefault(); 
    const form = $("#myForm"); 
    const thesisFile = $("#thesisFile").files[0]; 

    const oData = new FormData(form); 

    const request = new XMLHttpRequest(); 

    // replace "/Class/:name/detial" appropriately 
    request.open("POST", "/Class/:name/detial", true); 

    request.onload = (event) => { 
    if (request.status === 200) { 
     // do something 
    } else { 
     console.log("Error occurred"); 
    } 
    }; 

    request.send(oData); 
}; 

const form = document.forms.namedItem("myForm"); 
form.onsubmit = submit;