Multer没有重命名图像

时间:2015-09-07 22:49:32

标签: angularjs node.js image express multer

以下代码在所需位置生成图像,但图像未正确命名。

routes.js

var upload = multer({ 
  dest: './client/shared/assets/images/logos',
  rename: function (fieldname, filename, req, res) {
    console.log('Rename YO!')
    console.log(fieldname)
    console.log(filename)
    console.log(req)
    return 'test' + '-'+Date.now();
  }
});

app.post('/uploads/logo',upload.single('file'), function(req, res){
console.log('Upload photo yo!')
  console.log(req.body) // form fields
  console.log(req.file) // form files
  res.status(204).end()
});

create.controller.js

$scope.saveLogo = function(file) {
  console.log(file);
  file.upload = Upload.upload({
    url: '/uploads/logo',
    method: 'POST',
    fields: {
      name: $scope.item.name,
      subdomain: $scope.item.subdomain
    }
  });

  file.upload.then(function (_res) {
    console.log(_res)
    file.result = _res.data;
  }, function (_res) {
    console.log(_res)
    if (_res.status > 0)
      $scope.errorMsg = _res.status + ': ' + _res.data;
  });

  file.upload.progress(function (evt) {
    // Math.min is to fix IE which reports 200% sometimes
    file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
  });
};

我不知道我在这里缺少什么。我试图将multer功能限制为特定的后期操作,可能就是这样吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

解决了这个小小的问题:

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

var upload = multer({ storage: storage })

自上次发布以来,该方法已改为上述方法

相关问题