0

次のコードは、目的の場所に画像を生成しますが、画像の名前が正しくありません。

ルート.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 機能を特定の投稿アクションに制限しようとしていますが、それでよろしいですか?

前もって感謝します

4

1 に答える 1

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 })

前回のリリースからアプローチが上記の方法に変更されました

于 2015-09-08T01:12:05.850 に答える