2017-02-12 12 views
0

私がしたいことは、req.bodyで行われたいくつかのテストの後にファイルをサーバーにアップロードすることです。私はthis questionとよく似ていますが、それは問題はあるようですが、物事を取り仕切ることはできません。私のコードは:ルーターのポストノード内でmulterのアップロードファイルが動作しない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

ここでは、multerの例を見ることができます:http://stackoverflow.com/questions/31748936/how-to-send-files-with-superagent/39938312#39938312 – Hosar

答えて

0

私はそれを解決するための方法は、tmpフォルダにファイルをアップロードし、チェックを行い、正しい場合は、正しいフォルダにファイルを移動し、そうでなければ削除します。私ができることは最高です。私はmulter.jsがミドルウェアとして実行されるコードを提供しているので、テストとアップロードを実行するポイントがミドルウェアロジックと一貫していないことを知っています。私はここでバックドアを探していると思う。質問は残っています..

+0

このように、私は、postエンドポイントを持つmulterを使って、certanの場所にファイルをアップロードする方法をデモンストレーションしました。http://stackoverflow.com/questions/34590386/multer-create-new-folder-with-data/34936277#34936277 – Raf

関連する問題