2017-02-12 3 views
0

내가 원하는 것은 req.body에서 몇 가지 테스트를 수행 한 후 서버에 파일을 업로드하는 것입니다. 나는 정확한 문제로 보이지만 일을 처리 할 수없는 this question과 familiriar입니다. 내 코드는 다음과 같습니다.라우터 포스트 노드 내에서 멀터 업로드 파일이 작동하지 않습니다. js

var express = require('express'); 
var router = express.Router(); 
var fs=require('fs') 
var multer = require('multer'); 
var config = require(__dirname +'/../config.js') 
var rootArchiveFolder = config.rootFolder 

var getFields = multer(); 

router.post('/:module', getFields.any(), (req, res, next)=> { 
    var module = req.params.module; 

    console.log("req.body", req.body); 
    console.log("req.params.module", req.params.module); 

    switch (module){ 
     case 'archive': 

    var makeDBEntry = require('../models/makeDBEntry.js'); 
     makeDBEntry.makeArchiveEntry(req.body) 
     .then(responseData => { 
      console.log("all ok") 

      var tmpdir = req.body.p_receive_date; 
      var dir = tmpdir.replace(/\//g, "-"); 
      dir = rootArchiveFolder + dir; 
      if (!fs.existsSync(dir)){ 
       fs.mkdirSync(dir); 
      } 

      var storage = multer.diskStorage({ 
       destination: function(req,file,cb){ 
        cb(null,dir); 
       }, 
       filename: function(req,file,cb){ 
        // cb(null,req.body.p_doc_no); 
        cb(null, req.files[0].originalname); 
       } 
      }) 
      var upload = multer({storage:storage}); 
      // upload.any(req, res, next); doesnt seems to work 
      //how can i upload my files here after all my test are done? 

      res.end(); 
     }) 
     .catch(e => { 
      res.status(500).send(response.message); 
      console.log(e.message); 
     }); 
     res.send("ok") 
     break; 
    } 
}); 

무엇이 있습니까?

+0

여기에 멀더와 함께 살펴볼 수 있습니다 : http://stackoverflow.com/questions/31748936/how-to-send-files-with-superagent/39938312#39938312 – Hosar

답변

0

내가 해결할 수 있었던 방법은 tmp 폴더에 파일을 업로드 한 다음 수표를 만들고 올바른 경우 파일을 올바른 폴더로 옮기고 그렇지 않으면 삭제합니다. 그것은 내가 할 수있는 최선의 방법입니다. multer.js는 미들웨어로 실행될 코드를 제공하므로 테스트를 실행하고 업로드하는 시점이 미들웨어 로직과 일치하지 않습니다. 나는 여기 백도어를 찾고 있다고 생각한다. 질문은 남아 있습니다 ...

+0

이 답변에서, post endpoint가있는 multer를 사용하여 파일을 certan 위치에 업로드하는 방법을 시연했습니다. http://stackoverflow.com/questions/34590386/multer-create-new-folder-with-data/34936277#34936277 – Raf

관련 문제