2016-10-03 29 views
0

如何讓multer返回上傳文件的新文件名(superfilename)?node multer返回新文件名

所以完成後,它會返回新的文件名?

服務器雙面:

var storage = multer.diskStorage({ //multers disk storage settings 
    destination: function (req, file, cb) { 
     cb(null, '/opt/mean/public/uploads/') 
    }, 
    filename: function (req, file, cb) { 
     var datetimestamp = Date.now(); 
     var superfilename = file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1]; 
     cb(null, superfilename) 
    } 
    }); 
    var upload = multer({ //multer settings 
    storage: storage 
    }).single('file'); 



    upload(req,res,function(err){ 

      if(err){ 
      res.json({error_code:1,err_desc:err}); 
      return; 
      } 
      res.json({error_code:0,err_desc:null}); 
     }); 
+0

請問您是否可以詳細說明輸入和期望輸出以及您當前獲得的輸出? –

回答

0

可以retrun目標文件名:req.file.filename

一種方式是通過上傳對象爲如下上傳路線的中間件。 Rest文件相關信息將位於您的請求對象中。您可以參考official documentation瞭解暴露的API

app.post('/uploadFile',upload,(req,res)=>{ 

     if(req.file !== undefined){ 

     // once uploaded save the user data along with uploaded photo path to the database. 
     res.json({ 
      'fileName':req.file.originalname, 
      'destination':req.file.filename, 
      'userName':req.body.userName, 
      'phoneNumer':req.body.phoneNumber 
     }); 
     }else{ 
     res.json({ 
      'message':'Unable to Upload file' 
     }); 
     } 
    }); 
+0

你不需要*將它作爲中間件傳遞,因爲它無論如何都公開了'req,res,next'參數。 –

+0

即時通訊將使用更多的。無論如何,沒有中間件,我怎樣才能調用寫入的文件名? – maria

+0

你確實會將你的upload()代碼封裝在你的路由app.post()中,所以你應該能夠訪問'req'對象。 – Nivesh