使用multer重命名文件

时间:2016-07-31 17:25:57

标签: node.js express multer

我已将multer配置为;

var storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null,  '../images/profile');
  },
  filename: function(req, file, cb) {
    cb(null, req.body.username + '.jpeg');  // file does not get renamed
  }
});

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

// Route that uses multer
router.post('/auth/signup/upload', upload.single('image'), function(req, res) {
  console.log(req.body.username); // contains value
  res.send(); 
});

虽然req.body.username有一个值,但是文件没有重命名。 我在这里失踪了什么?

1 个答案:

答案 0 :(得分:1)

来自multer手册:

  

请注意,req.body可能尚未完全填充。这取决于客户端将字段和文件传输到服务器的顺序。

可悲的是,我不相信有一个很好的方法可以解决这个问题。您可以尝试切换HTML表单中字段的顺序,但这可能不会导致跨浏览器的一致行为。您也可以在查询字符串上发送用户名(即POST文件到http://foo.bar?username=me)。您也可以在之后手动移动文件,或者将用户名和文件之间的映射存储在其他位置。