2017-09-30 4 views
0

NodeJS 앱에서 body-parser, express 및 multer를 사용하고 있습니다. 이미지를 업로드하고 가입 양식에 몇 개의 텍스트 필드를 업로드해야합니다. 나는 이것을 위해 멀테를 사용하고있다. 정확히 여기 같은 것을 시도했다. - https://stackoverflow.com/questions/35847293/uploading-a-file-and-passing-a-additional-parameter-with-multer노드 JS에서 멀터를 사용하여 이미지 및 텍스트 업로드

그러나 나는 req.body에 빈 객체를 얻는다. 대상 폴더에 파일을 만들지 만 req.files.forEach 메서드는 빈 결과를 기록합니다.

HTML을 프론트 엔드 코드

  <form id="form" enctype="multipart/form-data" action="/profile" method="post" > 

      <label>Name</label> 
      <input type="text" placeholder=" Name" name="name" id="name" class="form-control"> 

      <label>Logo</label> 
      <input type="file" placeholder="Logo" name="logo" id="logo" class="form-control"> 

      <button id="addform" type="submit" class="btn btn-primary">Add Profile</button> 


     </form> 

서버 측 코드 : 노드에서

app.post('/profile', function(req, res) { 

     var storage = multer.diskStorage({ 
       destination: __dirname+'/file/uploads/' 
      }); 
    var upload = multer({ storage : storage}).any(); 

      upload(req,res,function(err) { 
       if(err) { 
        console.log(err); 
        return res.end("Error uploading file."); 
       } else { 
       console.log(req.body); 
       console.log(req.files); 
       req.files.forEach(function(f) { 
        console.log(f); 
        // and move file to final destination... 
       }); 
       res.end("File has been uploaded"); 
       } 
       }); 

    }); 

로그 출력 :

012 여기

내 코드입니다
{} 
[] 
+0

나는 정확한 코드를 복사하여 시험해 보았다. 그리고 본체와 파일이 콘솔에 로깅되어 모든 것이 잘 작동합니다. 그래서, 다른 코드의 문제일까요? 어쩌면 미들웨어일까요? 이것이 도움이되기를 바랍니다. –

+0

귀하의 문제는 해결 되었습니까? – Sagar

+0

예, 실제로 버튼 클릭을 참조하는 동안 '#'을 추가하는 것을 잊어 버렸습니다. – Anirudh

답변

0

본문 외부에서 멀터를 이동하고 파일 이름 매개 변수를 사용해보십시오. 나는 당신의 코드를 수정했다.

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

var upload = multer({ storage: storage }) 

//passing multer as middleware 
app.post('/profile',upload.any(), function(req, res) { 
    console.log(req.body) 


});